python(2)字符串和元组

一 字符串
1. 创建: 单引号, 双引号, 三引号 (转义字符: \', \", \n, \t)

2. 特性:
    索引;
    切片: s[start:stop:step]
    start默认值为0,stop默认值为字符串长度,step默认值为1,步长
               例如:s[1:4:2], s[::-1], s[:4], s[1:]
        连接操作: +a+b

        重复操作:*2*"a"    -------  aa
        成员操作符(某成员在不在字符串中): in, not in
3. 字符串是可迭代对象,通过for实现循环;

4. 字符串常用方法:
        1). 判断字符串由什么组成?    s.istitle判断是否是一个标题 s.isalnum判断是否为数字或字母组成 s.isalpha判断是否为字母 s.isdigit判断是否为数字 s.islower判断是否为小写字母 s.isspace判断是否为空格 s.istitle判断首字母是否为大写 s.isupper判断是否是大写字母
        2). 判断是否以什么开头,什么结尾?  
             s.startswith("http://")
             s.endswith(".png")
        3). 去除字符串的左右的空格:(主要应用在有用户输入数据的地方)
             s.strip(),s.lstrip(),s.rstrip(),s.replace(" ", "")
            重点: s.replace方法也可以间接实现删除某个字符;
        4). 字符串对齐格式化:左对齐, 右对齐, 中间对齐
            s.center(40, "*")居中
            s.ljust(40,"*")居左
            s.rjust(40,"*")居右
        5). 按照指定分隔符分离字符串:(默认分隔符为空格)
            ip = "172.25.254.250"
            ip.split(".")        # ['172', '25', '254', '250']
        6). 指定分隔符连接信息
            a = info.split()
            "+".join(a)            # 'westos+10+company'
5. 内置方法(BIF-built-in function)
        cmp(比较ACSLL码的大小), len(字符串长度), max, min, 枚举enumerate, zip(s1,s2)把s1和s2对应起来
        C语言中for循环的语法:
        for(i=0;i<100,i++):
        print i

       python中for循环的语法:
       for i in 可迭代的对象:
       state1....

       跳出for循环: break
       跳出本次for循环: continue
       第一个可迭代的对象: range(start,stop,step)
 


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

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

元组的创建

通过赋值方式创建元组:t = (1, 1.0, 2j, True, (1,2,3))
通过工厂方法创建元组:t = tuple()定义单个元组,一定要在这个元素后面加逗号
t1 = (1,)

元组的操作
1)索引:

# 正向索引
print t[0]
# 反向索引
print t[-1]

2)切片:t[:2]

print t[:2]
逆转元组元素
print t[::-1]

3)连接:+;t1+t2
4)重复*,t*4
5)成员操作符:in ,not in
allow_ips = ('172.25.254.1', '172.25.254.12', '172.25.254.13')
if "172.25.254.1" in allow_ips:
        print "有访问权限"
else:
        print "无访问权限"

元组的循环
字符串的循环:
可迭代对象
for i in "hello":
    print i
元组目前接触的第三个可迭代对象;
allow_ips = ('172.25.254.1', '172.25.254.12', '172.25.254.13')
for ip in allow_ips:
    print ip


 Demo: 端口扫描器雏形

ips = ('172.25.254.1', '172.25.254.12', '172.25.254.13')
ports = (80, 8080, 21, 22)
依次读取需要扫描的ip;
for ip in ips:
    # 依次读取要扫描的端口
    for port in ports:
        print "[+] Scaning %s:%d" %(ip, port)
元组可用的内置方法
print cmp(('a', 1,2,3,4), (1, 2,))
print max((12,34,12,56))
print min((12,34,12,56))
枚举
ips = ('172.25.254.1', '172.25.254.12', '172.25.254.13')
for i,j in enumerate(ips):
    print i,j
zip:

username = ("user1", "user2", "user3")
password = ("123", "456", "789")

zip(username, password)


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

goods = (
    ("Apple", 2),
    ("Ipad",  4000),
    ("iWatch", 3500)
)
print "商品编号\t商品名称\t商品价格"
for index, value in enumerate(goods):
    print "%.3d\t%s\t%.2f" %(index, value[0], value[1])
    
元组的常用方法

t = (2, 1, 1, 2)
print t.count(1)
print t.index(1)

练习题:

1. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提
 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
python(2)字符串和元组

python(2)字符串和元组

2. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

第一种:

python(2)字符串和元组

第一种比较麻烦,电脑计算量太大计算较慢

第二种:

套用了math sqrt( )函数  -----  返回x的平方根

python(2)字符串和元组

python(2)字符串和元组

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


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

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

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


- 示例1:

```
- 输入
    hello xiao mi
- 输出
    mi xiao hello
python(2)字符串和元组

python(2)字符串和元组
4. # (2017-好未来-笔试编程题)--练习

- 题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

- 输入描述:
每个测试输入包含2个字符串

- 输出描述:
输出删除后的字符串

- 示例1:

```
输入
    They are students.
    aeiou
输出
    Thy r stdnts.

第一种:

python(2)字符串和元组```

第二种:

python(2)字符串和元组

python(2)字符串和元组


方法一,字符串strip() lstrip() rstrip() 去掉字符串两端字符
方法二,删除单个位置的字符,可以使用切片 + 拼接的方式
方法三,字符串的replace()方法或者正则表达式re.sub删除任意位置字符
方法四,字符串translate方法,可以同时删除多种不同的字符

python(2)字符串和元组
5.
小易喜欢的单词具有以下特性:
    1.单词每个字母都是大写字母
    2.单词没有连续相等的字母。

- 输入描述:
输入为一个字符串,都由大写字母组成,长度小于100

- 输出描述:
如果小易喜欢输出"Likes",不喜欢输出"Dislikes"

```
输入
    AAA
输出
    Dislikes
python(2)字符串和元组