美文网首页Python养成记
5、编程示例:猜数字

5、编程示例:猜数字

作者: 魔方宫殿 | 来源:发表于2022-03-18 22:00 被阅读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项技能。不过总算完成了,可以愉快的玩耍了!
    下集见!

    相关文章

      网友评论

        本文标题:5、编程示例:猜数字

        本文链接:https://www.haomeiwen.com/subject/klbddrtx.html