经过前期的基础积累,现在我们开始编写一些小脚本,来学习python的一些流程语句。和python编程语句的格式
第一题猜数字:接受用户的输入,猜测一个随机1-10数字,用户有三次机会,猜对了就输出猜对了,猜错了就显示错误,并每次提示还有几次机会
import random #导入伪随机数模块,产生随机数
secreat_num=random.randint(0,10)
#产生一个0-10的随机数字,包括0和10
n=3
#计数,一共三次机会
for i in range(1,n+1):
#range(n)相当于range(1,4),会依次产生1,2,3,for为主循环语句
num=input('请输入猜测的数字:')
#接收用户输入,在for循环语句之内,执行3次
print('第{}次机会共3次机会'.format(i))
#字符串格式化方法
if num.isdecimal():
#永远不要相信用户的输入,所以先检查用户是否为数字,如果是则执行if语句块
if num==str(secreat_num):
#由于random产生的随机数是整形,而input返回的的字符串型,需要把类型变成一样才能比较
print('真聪明猜对拉')
break
#猜对了就跳出循环游戏结束
else:
#如果猜错了就走这条语句
print('不对不对再来吧')
else:
#如果用户输入的不是数字则走这条语句
print('输入有误请重新输入')
请仔细看上面小程序的注释,理解每一个判断流程,和语句块的缩进,包括每一个流程后面的冒号,这是新手经常犯的错误。
下面我们把游戏升级一下:
现在我们想给这道问题,增加一些新的提示,比如用户猜的数字比随机数字大我们要告诉用户猜大了,如果小了就提示小了
secreat_num=random.randint(0,10)
#产生一个0-10的随机数字,包括0和10
n=3
#计数,一共三次机会
for i in range(1,n+1):
#range(n)相当于range(1,4),会依次产生1,2,3,for为主循环语句
num=input('请输入猜测的数字:')
#接受用户输入,在for循环语句之内,执行3次
print('第{}次机会共3次机会'.format(i))
#字符串格式化方法
if num.isdecimal():
#永远不要相信用户的输入,所以先检查用户是否为数字,如果是则执行if语句块
if num==str(secreat_num):
#由于random产生的随机数是整形,而input返回的的字符串型,需要把类型变成一样才能比较
print('真聪明猜对拉')
break
elif int(num) > secreat_num:
print('猜的数字有点大')
else:
print('猜的数字有点小')
else:
#如果用户输入的不是数字则走这条语句
print('输入有误请重新输入')
大家仔细看,这两次有什么不同,很明显,第一次用的是if。。。。else。。流程语句,第二次用的是if。。。elif。。elif 。。。。else语句。其实第二个我们也可以用if。。。if。。else。。,但是他们还是有区别的,if。。if。。else。。,无论上一个if判断的是真还是假,都会执行下一个if判断。而if。。elif。。elif。。else。。只会执行其中一种情况,而不走其他的elif。所以如果判断的情况比较多,建议大家用if。。elif。。elif。。else。。
下面来说,for in 循环语句和while,这两个语句也是我们很经常会用到的,for…in…更适合迭代元素,而while很明显适合穷举。如何打破循环break或者return
for i in range(10):
if i==5:#循环到5就会终止
print(i)
break
#对于while来讲,打破循环是很重要的,否则会陷入无限的循环,很容易填满你的内存。
n=0
while True:
n +=1
if n==5:
print(n)
break
明天我们将用我们的基础知识,来做一个好玩的小程序,验证密码。
最后,请叫我雷锋。