python_day02

例一:

考察点:
    a). 死循环while语句;
    b). 循环语句和if语句的嵌套;
    c). breakcontinue的差异;


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默认值为0stop默认值为字符串长度,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

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值