字符串与元组

字符串类型
字符串的定义:
•第一种方式:
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:

字符串与元组


枚举的使用:自动售货系统部分代码
字符串与元组