练习:带循环和条件判断的给定一个数值num, 用户输入使用raw_input()函数来提示用户输入一个1和100之间的数,如果用户输入的数等于num, 显示成功并退出。否则显示一个错误信息然后再次提示用户输入数值,直到满足条件为止。
方法一:利用if语句
#!/usr/bin/env python
#coding:utf-8
for num in range(1,101):
num = input('Please input the correct number(0-100):')
if 68<num<=100:
print "the number is high"
elif 0<=num<68:
print "the number is low"
elif num == 68:
print "Congratulations,right"
exit()
else:
print "Please input correct number(0-100)"
方法二,利用while 和if 语句相嵌套
num = 89
while True:
guess_num = input("猜测<1-100之间的数>:")
if num == guess_num:
print "恭喜猜中"
exit()
elif num > guess_num:
print "too small"
else:
print "too large"
## while 循环
1.while中 break和continue的区别
break: 遇到break,跳出所有的循环;
continue: 跳出此次循环,回到循环的开始继续执行;
例如:打印1-10之间的数并且跳过5
2.while if 的运用
#!/usr/bin/env python
# coding:utf-8
i = 0
while i < 10:
i += 1
if i == 5:
continue
print i
3.死循环while... else.....
模拟shell输入环境
while True:
cmd = raw_input("[[email protected]>>> ~]# ")
if not cmd:
continue
elif cmd == "quit":
break
else:
print "run %s" %(cmd)
##字符串
字符串定义的三种方式:'hello' "hello" """hello"""
注意三重引号有三个作用:
• 块注释:多行代码注释
• 函数的doc文档
• 字符串格式化
转义符号:一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
\n: 代表换行符 \": 代表双引号本身
\t: 代表tab符 \': 代表单引号本身
操作符
成员操作符: in
连接操作符: and
重复操作符:*
*索引:获取特定偏移的元素,给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。
*切片
切片S[i:j]提取对应的部分作为一个序列:•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
•扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;切片s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法
字符串的常用操作:
str.capitalize() //将首字母大写
str.strip() ## 删除首尾的字符串或者空格
str.endswith() ##判断以什么结尾,返回为布尔值
str.startswith() ##判断以什么开头返回布尔值
str.isalnum() //判断是否都是字母或数字
str.isalpha() //判断是否都是字母
str.isdigit() //判断是否都是数字
str.islower() //判断是否都是小写
str.isspace() //判断是否都是英文空格
str.istitle() //判断是不是都是标题(有大小写)
str.isupper() //判断是不是都为大写字母
str.find(sub[,start[,end]])
- 判断sub是否在str中,存在返回索引值,不存在返
回-1.
str.index(sub[,start[,end]])
- 与find方法函数功能相同,如果sub不存在时抛出
ValueError异常;
str.center(width[,fillchar]) 返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。字符串常用操作:
str.ljust() 左边填充 str.rjust()右边填充
str.count(sub[, start[, end]]) -> int 返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数
str.split([sep[,maxsplit]]) 以sep字符串作为分割符对str进行切割,默认为空格
str.join()
案例一:
根据变量名的命名规则,判断变量名是否合法
while True:
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 "合法"
打印字符串对应的索引号:
s = "hello"
for i in range(len(s)):
print "%s %d" %(s[i],i)
##zip 分包
a = "ABC"
b = "abc"
zip (a,b)
##列表
定义一个空列表
list = [ ]
定义一个包含元素的列表,元素可以是任意类型,包括数值类型,列表,字符串等均可
list = ["fentiao", 4, 'gender']
list1 = ['fentiao',(4,'male')]
工厂函数方式创建列表:
li = list("hello")
列表的索引、切片,拼接+, 重复*, 成员操作符
可以通过for i in list1进行遍历列表中的各个元素.
更新列表 .append, .extend;
append: 添加一个元素
extend: 添加一个列表
删除列表;
.pop() :按照索引删除列表中的数 默认删除最后一个
.remove 删除列表中的某一个元素
列表的排序
.insert( ) 插入元素
.reverse( ) 倒置顺序
.ip.sort( )
排序
综合考察练习:
案例1
1. 用户名和密码分别保存在列表中;
2. 用户登录时,判断该用户是否注册;
2. 用户登录时,为防止黑客暴力**, 仅有三次机会;
3. 如果登录成功,显示登录成功(exit(), break).
方法一
#!/usr/bin/env python#coding: utf-8
users = ["user1", "user2", "user3"]
passwords = ["123", "456", "789"]
i = 0
while i < 3:
name = raw_input("请输入用户名:")
if name not in users:
print "用户未注册"
break
password = raw_input("请输入密码:")
i += 1
index = users.index(name)
if password == passwords[index]:
print "恭喜登录成功"
break
else:
print "请输入正确的用户名或密码!"
else:
print "已登录三次,请稍后再试"
方法二:
#!/usr/bin/env python
# coding:utf-8
user = ["westos","redhat","admin","lee"]
passwd = ["123", "344", "312", "324"]
trycount = 0
while trycount < 3:
trycount +=1
in_user = raw_input("输入用户名:")
if in_user not in user:
print "用户未注册"
break
in_passwd = raw_input("输入密码:")
for i in range(len(user)):
if in_user == user[i] and in_passwd == passwd[i]:
print "登陆成功"
exit()
else:
print "密码错误"
else:
print "超过三次"
案例2
出入栈
stack = [ ]
info = """
栈操作
1. 出栈
2. 入栈
3. 查看栈元素
4. 退出
"""
print info
while 1:
choice = raw_input("Choice:").strip()
if choice == '1':
if not stack == []:
stack.pop()
else:
print "栈为空"
elif choice == '2':
value = raw_input("请输入入栈的值:").strip()
stack.append(value)
elif choice == '3':
print "栈元素:",
for i in stack:
print i,
print
elif choice == '4':
exit()
else:
print "not valid choice"