Python(三)
来源:互联网 发布:enako 知乎 编辑:程序博客网 时间:2024/06/05 19:58
一、无限循环
实现无限循环两种方法:
while True:
.....
while 1:
....
break和comtinue:
break:跳出所有循环
continue:跳出此次循环,回到循环的开始继续执行
题目1:
生成一个随机数,让玩家猜一个数,如果跟这个数一致输出“恭喜中奖”,否则“谢谢惠顾”
解答:
#!/usr/bin/env python
# coding:utf-8
import random
guess=random.randint(1,100) #生成一个1-100之间的整数(包括1和100)
while True:
num=input("输入一个数:")
if num == guess:
print "恭喜中奖!"
exit()
else:
print "谢谢惠顾"
二、特殊语句
python中特有的while...else...语句:
如果满足while后面的语句,执行while循环的程序,如果不满足,执行else里面的程序
题目2:
1.系统中用户名密码为admin和redhat
2.用户登陆时,为防止暴力破解,仅有三次机会
3.如果登陆成功,显示登陆成功
解答:
#!/usr/bin/env python
# coding:utf-8
n=0
while n < 3:
name=raw_input("输入用户名:")
passwd=raw_input("输入密码:")
if name == "admin" and passwd == "redhat":
print "登陆成功"
break
else:
print "输入正确的用户名或密码"
n+=1
else:
print "输入超过3次,请稍后再试"
三、转义
四、索引
In [12]: a='hello word'
In [13]: a[0]
Out[13]: 'h'
In [14]: a[1]
Out[14]: 'e'
In [15]: a[5]
Out[15]: ' '
In [16]: a[-1]
Out[16]: 'd'
五、重复、连接、计算长度
In [51]: "#"*10 #重复打印#10次
Out[51]: '##########'
In [52]: 'hello' + 'word'
Out[52]: 'helloword'
In [53]: a='hello word'
In [54]: len(a)
Out[54]: 10
六、切片
切片[i:j]提取对应的部分作为一个序列
[:]获取从偏移量为0到末尾之间的元素
拷贝的一种方法
In [58]: a='abcdefg'
In [59]: a[0:5] #显示第1到第5个元素,边界并不包含在内
Out[59]: 'abcde'
In [60]: a[0:5:2] #显示第1到第5个元素,递增步长为2
Out[60]: 'ace'
In [62]: a[:] #显示所有元素
Out[62]: 'abcdefg'
In [63]: a[1:]
Out[63]: 'bcdefg'
In [65]: a[::-1] #倒序显示所有元素
Out[65]: 'gfedcba'
七、判断字串(成员操作符)
In [66]: a='hello'
In [67]: 'opt' in a
Out[67]: False
In [68]: 'o' in a
Out[68]: True
八、字符串常用操作
In [64]: s="h e llo"
In [65]: s.replace(" ","")
Out[65]: 'hello'
In [66]: a="admin redhat centos"
In [67]: a.split()
Out[67]: ['admin', 'redhat', 'centos']
如在脚本中a=raw_input("choice:")表示让用户输入一个值,但是用户有可能在输入的时候多打了几个空格,加上.strip()就可以自动忽略空格
In [60]: a=raw_input("choice:")
choice: 1
In [61]: '1' == a
Out[61]: False
In [62]: a=raw_input("choice:").strip()
choice: 1
In [63]: '1' == a
Out[63]: True
题目1:
用户输入一个变量名,判断是否合法
解答:
方法一:运用字符常用操作的知识
#!/usr/bin/env python
# coding:utf-8
"""
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
"""
while True:
name=raw_input("输入一个变量名:")
if name[0].isdigit():
print "变量名不合法(error 1)"
else:
for i in name[1:]:
if not(i.isalnum() or i == "_"):
print "变量名不合法(error 2)"
break
else:
print "变量名合法"
方法二:使用string函数
In [48]: import string
In [49]: string.digits
Out[49]: '0123456789'
In [50]: string.letters
Out[50]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#!/usr/bin/env python
# coding:utf-8
"""
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
"""
import string
while True:
name=raw_input("输入一个变量名:")
if name[0] == string.digits:
print "变量名不合法(error 1)"
else:
for i in name[1:]:
if not(i in string.digits or i in string.letters or i == "_"):
print "变量名不合法(error 2)"
break
else:
print "变量名合法"
数组:数组存储的是同一类型的一串信息
列表:打了激素的数组,可以存储不同类型的数据,甚至可以在列表中再存储一个列表
创建列表:
赋值方式 m = [1,1.2,"hello",True,1+7j,[1,2,"hello"]]
工厂函数 n = list("hello")
支持索引、切片、拼接、重复、成员操作符
可以通过 for i in list进行遍历列表中的各个元素
更新列表append(只能更新一个元素),extend(可以更新多个元素)
删除列表remove,pop
内置方法:cmp,len,max,min,enumerate,zip
元组:带了紧箍咒的列表
创建
tu = (1,2,3,4)
注意:单个元组定义必须在后面加逗号tu = (1,)
工厂方法:t= tuple([1,2,3])
支持索引、切片、拼接、重复、成员操作符
内置方法:cmp,len,max,min,enumerate,zip
集和:
集和是无序的,不重复的数据类型
可以去除列表或者元组中重复的元素
集和里面不能放可变数据类型
集和里面remove()和discard()都是删除,但是remove里面如果没有元素会报错,而discard没有元素不会报错
子集.issubset
父集.issuperset
交集.isdisjoint
^交叉集
字典:
字典不支持索引、切
字典里面的key不能重复
题目2:
查看1-10号主机的21,22,3306,80,69端口
解答:
#!/usr/bin/env python
# coding:utf-8
ports = [21,22,3306,80,69]
for i in range(1,11):
for port in ports:
ip = '172.25.254.'+str(i)
print "[+] Listening On:%s:%d" %(ip,port)