我们需要对“game-简陋版”进行修改:
1、当用户猜错的时候,程序应该给出提示
2、应该提供多次机会给用户
3、每次运行程序,答案应该是随机的
1、当用户猜错的时候,程序应该给出提示
if...else...语句
temp = input("不妨猜一下我对象现在心里想的是哪个数字:") guess = int(temp) if guess == answer: print("你是你对象肚子里的蛔虫嘛?!") print("哼,猜中了也没奖励!") else: if guess < answer: print("小啦~") else: print("大啦~") print("游戏结束,不玩啦:)")
2、应该提供多次机会给用户
循环结构-其一
while条件语句:
如果条件为真(True)执行这里的语句
>>> while 1<2: print("I love 钏")
【结果会一直输出,除非按“Ctrl+c”】
*如果不想让他一直输出,需要重新设置变量:
>>> count = 3 >>> while count > 0: print("I love 钏") count = count - 1
【则只会输出三行】
由此改进程序:
counts = 3 while counts > 0: temp = input("不妨猜一下我对象现在心里想的是哪个数字:") guess = int(temp) if guess == 8: print("你是你对象肚子里的蛔虫嘛?!") print("哼,猜中了也没奖励!") else: if guess < 8: print("小啦~") else: print("大啦~") counts = counts - 1 print("游戏结束,不玩啦:)")
此处注意缩进错误!!!!
全部完成后,还存在问题:
此处的3次,并不是总共可以输入3次,而是错误的数可以出入3次;如果你输入的是正确的,则会一直循环,没有结束
【解决方法】将“count = count - 1”往前缩进,则不管对错,都只可以3次。
counts = 3 while counts > 0: temp = input("不妨猜一下我对象现在心里想的是哪个数字:") guess = int(temp) if guess == 8: print("你是你对象肚子里的蛔虫嘛?!") print("哼,猜中了也没奖励!") else: if guess < 8: print("小啦~") else: print("大啦~") counts = counts - 1 print("游戏结束,不玩啦:)")
【存在问题】但是,如果人家第一次就猜对答案了,还让人重复输入三次,是不是过分啦~
【解决方法】break语句:跳出一层循环体
>>> counts = 3 >>> while counts > 0: print("ilc") counts = counts - 1 break ilc
由此改进:
counts = 3 while counts > 0: temp = input("不妨猜一下我对象现在心里想的是哪个数字:") guess = int(temp) if guess == 8: print("你是你对象肚子里的蛔虫嘛?!") print("哼,猜中了也没奖励!") break else: if guess < 8: print("小啦~") else: print("大啦~") counts = counts - 1 print("游戏结束,不玩啦:)")
3、每次运行程序,答案应该是随机的
(1)如何搜索找到库?
在IDIE右上角找到【Help】,点击【Python Docs F1】,点击弹出页面左上【索引】,搜索“random”,点击下方【random(module)】,双击,就是对random模块的帮助文档了。
(2)random模块(生成伪随机数)
①导入random模块:
>>> import random
② 导入 random 模块中 randint 函数
【random . randint(a , b)】 (随机获取一个a~b内的一个整数):例:
>>> random.randint(1,10) 9 >>> random.randint(1,10) 4 >>> random.randint(1,10) 8
应用到程序中:
拓展:如何重现random伪随机数?__ getstate函数
想要实现对伪随机数而攻击,就要拿到它的“种子”。
一般情况下,random会使用系统时间来作为随机数种子。
我们就可以使用“getstate函数”来获取随机数种子加工之后随机数生成器的内部状态。如图:
我们用x命名getstate,然后生成随机数,如图:
那我们如何攻击伪随机数呢? ___ setstate函数
调用“setstate函数”重新设置随机数生成器的内部状态,再生成一次随机数,发现这和刚才生成的随机数一样!!如图