Python养成记

5、编程示例:猜数字

2022-03-18  本文已影响0人  魔方宫殿
Life is short, you need Python!

上集回顾:

  1. 布尔型(bool):True、False
  2. 条件控制:if ... else ...

猜数字游戏就是小P会想一个随机数,然后玩家通过输入数字去猜测。如果输入的数字不是随机数,小P会反馈大了还是小了,直到输入的数字和随机数一样就算成功。可以比一比谁用的次数更少!

一、随机数
为了编程实现这个小游戏,首先要生成一个随机数,Python已经准备好了一个random库,可以直接拿来使用。该库提供了一个random()函数,返回一个随机数N满足0<= N < 1:

>>> import random
>>> random.random()
0.5805537271589438
>>> random.random()
0.38519804422612247
>>> random.random()
0.45042797351175534

可以发现每次结果都不相同。不过这个浮点数位数有点多,要猜这个随机数不知道要猜多久……还好Python还提供了另外一个函数randint(a, b),该函数返回随机整数 N 满足 a <= N <= b。

>>> random.randint(0, 1)
1
>>> random.randint(0, 1)
0
>>> random.randint(0, 1)
1
>>> random.randint(0, 1)
0
>>> random.randint(0, 1)
0
>>> random.randint(0, 1)
0

这个好猜,50%的概率!如果要猜100以内的数就需要写成:random.randint(0, 100)。

二、输入交互
随机数搞定了,下面就是怎么输入的问题了。Python提供了一个input()函数,可以让玩家在命令行进行输入交互。调用该函数时还可以加入提示语,提示语会显示在最前面用作输入提示:

>>> input("请输入一个数字:")
请输入一个数字:100
'100'
>>> x = input("请输入一个数字:")
请输入一个数字:50
>>> print(x)
50
>>> type(x)
<class 'str'>

实现发现input的输入的都是字符串类型,如果想要整数还需要进行一次转换:

>>> y = int(x)
>>> print(y)
50
>>> type(y)
<class 'int'>

三、while循环
输入交互也搞定了,好像还有个问题,现在玩家只能猜一次,而游戏需要玩家在没猜对之前能够一直猜。这时候就需要用到while循环,在一定条件下循环执行代码块,直到条件不成立退出循环。例如计算从1加到100的总和:

>>> total = 0
>>> index = 0
>>> while index < 100 :
...   index = index + 1
...   total = total + index
... 
>>> print(total)
5050

四、开始编程
万事俱备,开始编程:

>>> randNum = random.randint(0, 100) # 1,生成一个随机数N:0 <= N <= 100
>>> while True : # 2,一直循环让玩家猜数字
...   inputStr = input("请输入一个数字: ") # 3,存储用户输入的数字
...   inputNum = int(inputStr) # 4,把输入的字符串转换成整数
...   if inputNum  > randNum  : print("啊哦,您输入的数字大了!") # 5, 如果玩家输入的数字 大于 随机数
...   elif inputNum  < randNum  : print("哦吼,您输入的数字小了!") # 6, 否则,如果输入的数字 小于 随机数
...   else :  # 7, 再否则,就是相等了
...     print("Bingo,你赢了!")
...     break # 退出循环,结束游戏
...
请输入一个数字: 50
啊哦,您输入的数字大了!
请输入一个数字: 25
啊哦,您输入的数字大了!
请输入一个数字: 12
哦吼,您输入的数字小了!
请输入一个数字: 18
啊哦,您输入的数字大了!
请输入一个数字: 15
啊哦,您输入的数字大了!
请输入一个数字: 14
Bingo,你赢了!

五、Python文件
程序写完了,玩了一把还挺好玩的,但是想再玩一把的话还要再敲一遍代码?能不能把写好的代码保存一个地方,想玩就执行一下就行了?当然有的,只要把一个文本保存成以.py结尾的文件名,就是一个Python文件了。然后在命令行执行python xxx.py就能执行Python文件了。比如我们打开一个记事本,输入上面的代码,并保存成guess.py,然后执行python guess.py,就能愉快的玩耍了!

# guess.py
import random

# 1,生成一个随机数N:0 <= N <= 100
randNum = random.randint(0, 100)

# 2,一直循环让玩家猜数字
while True :
    # 3,存储玩家输入的数字
    inputStr = input("请输入一个数字: ")
    # 4, 把输入的字符串转换成整数
    inputNum = int(inputStr)
    # 5, 如果玩家输入的数字 大于 随机数
    if inputNum > randNum : print("啊哦,您输入的数字大了!")
    # 6, 否则,如果输入的数字 小于 随机数
    elif inputNum  < randNum : print("哦吼,您输入的数字小了!")
    # 7, 再否则,就是相等了
    else :
        print("Bingo,你赢了!")
        break # 退出循环,结束游戏

执行结果:


执行结果

注:Windows用户一定要显示记事本的扩展名.txt


本集技能总结:

  1. 随机数:random.random()、random.randiint()
  2. 输入交互:input()
  3. while循环:当条件成立时,循环执行代码块
  4. Python文件:xxx.py

终于写完了,本来还以为掌握的技能差不多了,结果又临时恶补了3项技能。不过总算完成了,可以愉快的玩耍了!
下集见!

上一篇下一篇

猜你喜欢

热点阅读