例一:
考察点:
a). 死循环while语句;
b). 循环语句和if语句的嵌套;
c). break和continue的差异;
1. cmd = 显示命令行提示符,等待用户输入;
2. 如果命令为空, 跳出本次循环,继续接收用户命令;
3. 如果命令为quit,跳出所有循环,结束程序;
4. 如果有命令,那么打印"run %s" %(cmd)
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 while True:
5 cmd = raw_input("[root@server ~]# ")
6
7 if cmd == "":
8 continue
9 elif cmd == "quit":
10 break
11 else:
12 print("run %s") %(cmd)
C语言中for循环的语法:
for(i=0;i<100,i++):
print i
python中for循环的语法:
for i in 可迭代的对象:
state1....
跳出for循环: break
跳出本次for循环: continue
第一个可迭代的对象: range(start,stop,step)
例二:
考察点:
for循环的嵌套
range使用
编写九九乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
........
1*9=9 ......................... 9*9=81
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 for i in range(1,10):
5 for j in range(1,i+1):
6 print("%d*%d=%d") %(j,i,i*j),
7 print
字符串
创建:
单引号, 双引号, 三引号 (转义字符: \’, \”, \n, \t)
特性:
切片: s[start:stop:step]
start默认值为0,stop默认值为字符串长度,step默认值为1,
s[1:4:2], s[::-1], s[:4], s[1:]
连接操作: + print "hello " + "world"
重复操作: * print "*"*10 + "学生管理系统" + "*"*10
成员操作符: in, not in "h" not in "hello"(返回值类型为bool)
字符串常用方法:
1). 判断字符串由什么组成? s.isdigit() ...........
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'
字符串是可迭代对象,通过for实现循环;
练习题:
1. 用户输入字符串, 打印该字符串反转后的字符串;
2. 变量名是否合法判断程序;
变量名命名规则: 由字母,下划线或者数字组成,但不能以数字开头;
请输入变量名:
1). 判断第一个字符是否由字母或下划线组成;
2). 如果第一个字符合法,判断剩余字符是否由字母,数字或下划线组成;
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 while True:
5 s = raw_input("请输入变量名:")
6
7 if s[0].isalpha() or s[0] == "_":
8 for i in s[1:]:
9 i.isalnum() or i == "_"
10 print "合法"
11 else:
12 print "不合法"
内置方法(BIF-built-in function)
cmp, len, max, min, 枚举enumerate, zip
In [114]: s
Out[114]: 'hello'
In [115]: for a,b in enumerate(s):
.....: print a, b
.....:
0 h
1 e
2 l
3 l
4 o
In [116]: s1
Out[116]: '123'
In [117]: s2
Out[117]: 'abc'
In [118]: s3
Out[118]: 'sdf'
In [119]: zip(s1,s2,s3)
Out[119]: [('1', 'a', 's'), ('2', 'b', 'd'), ('3', 'c', 'f')]
元组(带了紧箍咒的列表)
元组的创建
- 通过赋值方式创建元组;
- 通过工厂方法创建元组;
tuple
可以把元组看作一个容器,任何数据类型都可以放在这个容器里面;
t = (1, 1.0, 2j, True, (1,2,3))
type(t)
tuple
In [132]: t1 = (1)
In [133]: print type(t1)
<type 'int'>
pri 定义单个元组,一定要在这个元素后面加逗号
t1 = (1,)
print type(t1)
tuple
工厂方法
t = tuple()
print type(t)
元组的操作
索引
t = ("fentiao", 5, "male")
正向索引
print t[0]
反向索引
print t[-1]
元组嵌套时元素的访问
t1 = ("fentiao", 5, "male", ("play1", "play2", "play3") )
print t1[3][1]
切片
print t[:2]
逆转元组元素
print t[::-1]
连接
print t + t1
重复
t*3
成员操作符
字符串的循环:
In [153]: for i in "hello":
.....: print i
.....:
h
e
l
l
o
元组是目前接触的第三个可迭代对象;
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
0 172.25.254.1
1 172.25.254.12
2 172.25.254.13
zip:
username = ("user1", "user2", "user3")
password = ("123", "456", "789")
zip(username, password)
[('user1', '123'), ('user2', '456'), ('user3', '789')]
枚举的使用
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)
练习2:
# 依次遍历str1, str2;
# 分别对比里面元素是否相等;
# 如果相等, 将该字符替换为空,实现删除的目的;
方法一:
#!/usr/bin/env python
#coding=utf-8
s1=raw_input("first str:") # They are students.
s2=raw_input("last str:") # aeiou
for i in s1: # T h e y
for j in s2: # a e i o u
if i==j:
s1=s1.replace(i,"")
print s1
方法二:
#!/usr/bin/env python
#coding=utf-8
s1=raw_input("first str:") # They are students.
s2=raw_input("last str:") # aeiou
# 遍历str1;
# 判断str1的字符是否为str2的成员(子串);
# 如果是成员, 将该字符替换为空,实现删除的目的;
for i in s1: # T h e y
if i in s2:
s1=s1.replace(i,"")
print s1