字符串与元组

字符串类型
字符串的定义:
•第一种方式:
str1 = 'our company is westos'
•第二种方式:
str2 = "our company is westos"
•第三种方式:

str3 = """our company is westos"""


转义符号
一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
\n: 代表换行符 \": 代表双引号本身
\t: 代表tab符 \': 代表单引号本身
三重引号
• 块注释:多行代码注释
• 函数的doc文档:讲函数时会说到
• 字符串格式化
eg:
#!/usr/bin/env python
#coding:utf-8
'''
while True:
        cmd = raw_input(">>>:").strip()
        if not cmd:
                continue
        elif cmd == "quit":
                break
        else:
   else:
                print "run %s" %(cmd)
'''
print'''
       (1)取五个数的和
       (2)取五个数的平均值
       ....
       (x)退出。

    '''



字符串操作预览
字符串属于序列,序列支持的操作如下:
• 索引 切片
• 判断子串 重复
• 连接  计算长度
• 索引(s[i] ):获取特定偏移的元素
• 给出一个字符串,可输出任意一个字符,如果索引为负数,
就是相当于从后向前数。
索引理解
字符串 h  e  l  l  o  \n
索引   0  1  2  3  4  5
索引  -6 -5 -4 -3 -2 -1
切片
切片S[i:j]提取对应的部分作为一个序列:

•上边界并不包含在内;

•如果没有给出切片的边界,切片的下边界默认为
0,上边界为字符串的长度;
•扩展的切片S[i:j:k],其中i,j含义同上,k为递增步
长;切片
s[:]获取从偏移量为0到末尾之间的元素,是实现有效
拷贝的一种方法


s[::-1]字符串反转
练习:
1. 用户输入字符串, 打印该字符串反转后的字符串;
#!/usr/bin/env python
#coding:utf-8
s=raw_input("str:")
print s[::-1]



判断子串
判断一个sub字符串是不是属于s字符串:
•sub in s
•sub not in s


重复:print "x"*i(x表示重复内容,i表示重复数据)
连接:srt1+str2
计算长度:str(len)


字符串的类型转换
str(obj) 将其他类型内容转换为字符串
int(obj) 将字符串转换为为整数

float(obj) 将字符串转换为浮点型
long(obj) 将字符串转换为长整型


字符串常用操作:
str.capitalize()
- 将字符串首字母大写,并返回新的首字母大写后的字符串;


str.center(width[,fillchar])

返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空>格填充。
str.count(sub[, start[, end]]) -> int
- 返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数。

str.endswith(suffix[, start[, end]])
- 判断字符串是否以suffix结束,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,>返回True;否则返回False
str.startswith(prefix[, start[, end]])
#判断字符串是否以prefix,如果start和end指定,则返回str中指定范围内str子串是否以prefix开始,如果是,返回True;否则返回False
str.find(sub[,start[,end]])


# 判断sub是否在str中,存在返回索引值,不存在返回-1.
str.index(sub[,start[,end]])
# 与find方法函数功能相同,如果sub不存在时抛出ValueError异常;


str.isalnum() //判断是否都是字母或数字


str.isalpha() //判断是否都是字母
str.isdigit() //判断是否都是数字
str.islower() //判断是否都是小写
str.isspace() //判断是否都是英文空格
str.istitle() //判断是不是都是标题(有大小写)
str.isupper() //判断是不是都为大写字母
练习2
2. 变量名是否合法判断程序;
           变量名命名规则: 由字母,下划线或者数字组成,但不能以数字开头;

                s = "hello"
                请输入变量名:
                1). 判断第一个字符是否由字母或下划线组成;
                2). 如果第一个字符合法,判断剩余字符是否由字母,数字或下划线组成;
while True:
        s = raw_input("输入变量名:")   #s[0] #s[1:]

        if not(s[0].isalpha() or s[0] == "_"):
                print "不合法的变量名"
        else:
                for i in s[1:]:         # s[1:]="ello"  #i=e,l,l,o
                        if not (i.isalnum() or i=="_"):
                                print "变量名不合法"
                                break
                else:
                        print "变量名合法"
str.join(seq)


以str作为分隔符,将序列seq中的所有元素合并为一个新的字符串。
str.replace(old,new[,count])
将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个字符串


str.split([sep[,maxsplit]])
以sep字符串作为分割符对str进行切割,默认为空格; maxsplit代表切割的此处


str.strip([chars])
返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。


练习3. # (2017-小米-句子反转)

- 题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前
后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子


- 示例1:

```
- 输入
    hello xiao mi
- 输出
    mi xiao hello
给定一个句子只包含字母和空格:
hello xiao mi

mi xiao hello

#!/usr/bin/env python
#coding:utf-8
s = raw_input("给定一个句子只包含字母和空格:\n")
s=s.split()

print " ".join(s[::-1])

#

二、元组(带了紧箍咒的列表)

元组的创建

1 - 通过赋值方式创建元组;
2- 通过工厂方法创建元组

可以把元组看作一个容器,任何数据类型都可以放在这个容器里面;

定义空元组:

tuple=()

定义单个元组:

tuple=(fentiao,) 定义单个元组,一定要在这个元素后面加逗号

定义一般元组:

t = ("fentiao", 5, "male")


元组的操作
#
# - 索引
# - 切片
# - 连接
# - 重复



 - 成员操作符


枚举
ips = ('172.25.254.1', '172.25.254.12', '172.25.254.13')
for i,j in enumerate(ips):
    print i,j


zip:



枚举的使用:自动售货系统部分代码



### Python 字符串元组的区别及用法对比 在 Python 中,字符串元组都是不可变的数据类型,但在功能、用途以及操作方式上有显著差异。以下是两者之间的主要区别及其具体用法分析。 --- #### **1. 定义语法** - **字符串** 字符串是由字符组成的序列,使用单引号 `' '` 或双引号 `" "` 表示[^3]。它本质上是一个不可变的字符数组。 ##### 示例: ```python str_example = "hello world" ``` - **元组** 元组由一系列固定顺序的元素组成,使用圆括号 `()` 表示,元素之间通过逗号分隔[^2]。它可以包含不同类型的元素。 ##### 示例: ```python tuple_example = (1, "two", [3, 4]) ``` --- #### **2. 可变性** - **字符串** 和元组一样,字符串也是不可变的。这意味着一旦创建了一个字符串对象,就无法对其进行修改。如果需要改变内容,则必须创建一个新的字符串对象[^3]。 ##### 示例: ```python s = "hello" try: s[0] = "H" # TypeError: 'str' object does not support item assignment except Exception as e: print(e) new_s = "H" + s[1:] # 创建新字符串 print(new_s) # 输出:Hello ``` - **元组** 虽然元组整体是不可变的,但如果其中包含了可变数据类型(如列表),则该部分是可以被修改的[^2]。 ##### 示例: ```python t = (1, ["apple", "banana"]) t[1][0] = "orange" # 修改嵌套列表中的值 print(t) # 输出:(1, ['orange', 'banana']) ``` --- #### **3. 索引切片** - **字符串** 字符串支持基于位置的索引访问和切片操作。每个字符都可以通过其对应的整数索引来获取或截取子字符串[^3]。 ##### 示例: ```python s = "abcdefg" print(s[0]) # 输出:a print(s[-1]) # 输出:g print(s[1:4]) # 输出:bcd ``` - **元组** 类似于字符串元组也支持索引和切片操作。可以通过索引访问特定元素或将某些连续的部分提取出来形成新的元组。 ##### 示例: ```python t = (1, 2, 3, 4, 5) print(t[0]) # 输出:1 print(t[-1]) # 输出:5 print(t[1:4]) # 输出:(2, 3, 4) ``` --- #### **4. 方法集** - **字符串方法** 字符串提供了丰富的内置方法用于处理文本数据,例如大小写转换、查找替换等[^3]。 - `.upper()`: 将所有字母转为大写。 - `.lower()`: 将所有字母转为小写。 - `.replace(old, new)`: 替换指定子串。 - `.split(sep=None)`: 按照分隔符分割成列表。 ##### 示例: ```python text = "hello python" print(text.upper()) # 输出:HELLO PYTHON print(text.replace(" ", "_")) # 输出:hello_python ``` - **元组方法** 元组的方法较少,主要包括统计和定位相关函数: - `.count(value)`: 统计某值出现次数。 - `.index(value[, start[, end]])`: 查找第一个匹配项的位置。 ##### 示例: ```python t = (1, 2, 3, 2, 4) print(t.count(2)) # 输出:2 print(t.index(3)) # 输出:2 ``` --- #### **5. 应用场景** - **字符串** 主要用来表示和处理文本信息,在程序中广泛应用于日志记录、文件读写、网络通信等领域[^3]。 - **元组** 常见的应用场合包括返回多重值、作为字典键(因为不可变)、存储一组常量配置参数等。 ##### 示例: ```python def get_coordinates(): return (10, 20) point = get_coordinates() print(f"x={point[0]}, y={point[1]}") # 输出:x=10, y=20 ``` --- ### 总结表格 | 特性 | 字符串 | 元组 | |-----------------|--------------------------------|-------------------------------| | 数据类型 | 文本 | 多种类型 | | 是否有序 | 是 | 是 | | 是否允许重复 | 是 | 是 | | 是否可变 | 不可变 | 整体不可变 | | 索引/切片 | 支持 | 支持 | | 内置方法数量 | 较多 | 较少 | | 使用场景 | 文本处理 | 返回多重值、配置参数等 | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值