字符串与元组
字符串的定义:
•第一种方式:
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:
枚举的使用:自动售货系统部分代码