P7~P8 改进我们的小游戏

我们需要对“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函数”重新设置随机数生成器的内部状态,再生成一次随机数,发现这和刚才生成的随机数一样!!如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值