python元祖
字符串的创建
1.创建:单引号,双引号,三引号,(转译符:\',\",\n,\t)
2.特性:索引,切片:s[start:stop:step]start默认值为0stop默认为字符串长度
step歩长,每一部走多长
s[1:4:2] s[::-1]取反 s[:4]
连续操作:
重复操作:
成员操作符:in ,not in
#3.字符串是可迭代对象通过for实现循环
"""
"""
练习题
1.用户输入字符串,打印该字符串的反转字符串
2.变量名是否合法判断程序;
变量名命名规则:由字母,下划线或者数字组成但不能以数字开头
s = "hello"
请输入变量名:
1).判断第一个字符是否由字母或者下划线组成:
2).如果第一个字符和法,判断剩余字符是否由字母数字下划线组成
"""
while 1:
s = raw_input("变量名:")
if not (s[0].isalpha() or s[0] == "_"):
print "不合法"
else:
for i in s[1:]:
if not (i.isalnum() or i=="_"):
print "不合法"
break
else:
print "合法"
if和elif后边都要跟表达式,else不用
#4.字符串的常用方法
>> 1)判断字符串已什么开有的
>> 2)判断是否以什么开头以什么结尾
s.startswith("http://")
s.endswith(".png")
>> 3)去除字符串的左右的空格:(主要应用在有用户输入数据的地方)
s.strip(),s.lstrip(),s.rstrip()
重点:s.replace('l',"") 替换
>> 4)字符串对齐格式化:左对齐,右对齐,中间对齐
s.center(40,"*")
s.ljust(40,"*")
s.rjust(40,"*")
>> 5)按照指定分隔符分离字符串:
ip = "172.25.254.250"
ip.split(".")
>> 6)连接指定的信息
a = info.split()
"+".join(a)
s.count('l')l出现的次数
s.index('l')找到字符的索引
s.find('l')找到字符的索引
#5.内置方法(BIF-build in founction)
cmp()比较大小
len()字符长度
min()
max()
枚举enumerate(s)
for index,value in enumerate(s):
print index,value
zip()
元祖(带了紧箍咒的列表)
#元祖的创建
>>通过赋值方法创建元祖
>>通过工厂方法创建元祖
#tuple
#可以把元祖看作一个容器,任何数据类型都可以放在这个容器里面:
t = (1,1.0,2j,ture,(1,2,3))
#定义单个元祖的时候,一定要在这个元素后面加逗号
t = (1,)
#工厂方法
t = tuple()
#元祖的操作
>>索引
正向索引0123print t[0]
反向索引-1-2-3print t[-1]
元祖嵌套
>>切片
print t [:2]
逆转元祖元素
print[::-1]
>>连接
print t + t1
>>重复
t*3
>>成员操作符
allow_ips = ('172.25.254.1','172.25.254.2','172.25.254.3')
if "172.25.254.1" in allow_ips:
print "有访问权限"
else:
print "无访问权限"
#元祖的循环
元祖目前接触的第三个可迭代对象
端口扫描器的雏形
ips = ('172.25.254.1','172.25.254.2','172.25.254.3')
ports = (80,8080,21,22)
for ip in ips:
for port in ports:
print "[+] Scaning %s:%d" %(ip,port)
In [28]: for ip in allow_ips:
....: for port in ports:
....: print "[+] Scaning %s:%d" %(ip,port)
....:
[+] Scaning 172.25.254.1:80
[+] Scaning 172.25.254.1:8080
[+] Scaning 172.25.254.1:21
[+] Scaning 172.25.254.1:22
[+] Scaning 172.25.254.2:80
[+] Scaning 172.25.254.2:8080
[+] Scaning 172.25.254.2:21
[+] Scaning 172.25.254.2:22
[+] Scaning 172.25.254.3:80
[+] Scaning 172.25.254.3:8080
[+] Scaning 172.25.254.3:21
[+] Scaning 172.25.254.3:22
##元祖的常用方法
t.count()
t.index()可以指定在那个范围里找索引
#元祖的内置方法
cmp()
max((12,34,56,))
枚举 enumerate
for i,j in enumerate(ips)
print i,j
自动贩卖
goods = (
("Apple",2),
("Ipad",4000),
("Iwatch",3500)
)
print "商品编号\t商品名称\t商品价格"
for index,value in enumerate(goods):
print "%3d\t%s%.2f" %(index,value[0],value[1])
zip()
username = ("user1""user2""user3")
password = ("123""456""789")
zip(username,password)
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,求应发放奖金总数?
2. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
3. # (2017-小米-句子反转)
- 题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1:
```
- 输入
hello xiao mi
- 输出
mi xiao hello
4. # (2017-好未来-笔试编程题)--练习
- 题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
- 输入描述:
每个测试输入包含2个字符串
- 输出描述:
输出删除后的字符串
- 示例1:
```
输入
They are students.
aeiou
输出
Thy r stdnts.
```
5. # (2017-网易-笔试编程题)-字符串练习
小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
列可能不连续。
例如:
小易不喜欢"ABBA",因为这里有两个连续的'B'
小易不喜欢"THETXH",因为这里包含子序列"THTH"
小易喜欢"A","ABA"和"ABCBA"这些单词
给你一个单词,你要回答小易是否会喜欢这个单词。
- 输入描述:
输入为一个字符串,都由大写字母组成,长度小于100
- 输出描述:
如果小易喜欢输出"Likes",不喜欢输出"Dislikes"
示例1 :
```
输入
AAA
输出
Dislikes
```