翼度科技»论坛 编程开发 python 查看内容

Python基础小案例:猜谜游戏

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33
本教程将演示用Python开发一个简单的数字猜测游戏的过程。
竞猜游戏的机制

我们正试图开发一个游戏,从用户那里获取上限和下限,在这个范围内生成一个随机数,要求用户猜测这个数字,并计算用户用了多少条线索才猜对了。这个游戏将只基于CLI。
使用Python中的random 模块的数字猜测游戏

我们的程序做的第一件事是接受用户的上限和下限作为输入。这可以用Python内置的input() 方法来完成。
input() 方法从命令行中读取输入,并将其作为一个字符串返回。这里唯一的问题是,我们想输入整数值。
我们可以把我们的input() 方法包在内置的int() 方法里面来解决这个问题。这将把input() 方法返回的输入字符串转换成一个整数值。
下面的例子显示了这个步骤的工作实现。
代码:
  1. lower_limit = int(input("Please enter the Lower Limit"))
  2. upper_limit = int(input("Please enter the Upper Limit"))
  3. print("Lower Limit =", lower_limit)
  4. print("Upper Limit =", upper_limit)
复制代码
输出:
  1. Please enter the Lower Limit0
  2. Please enter the Upper Limit99
  3. Lower Limit = 0
  4. Upper Limit = 99
复制代码
我们可以在输入input() 方法里面的数据作为输入参数的同时,写出我们要显示给用户的信息。由于我们有下限和上限,我们可以很容易地写一些代码,在这个范围内生成一个随机的整数。
我们可以使用Python中内置的random 模块来执行这项任务,称为random.randint() 方法。它将下限和上限作为输入参数,并返回该范围内的一个整数。
下一个代码例子显示了如何使用Python的random.randint() 方法在指定范围内生成一个随机的整数。
代码:
  1. import random
  2. number = random.randint(lower_limit, upper_limit)
  3. print("Random Number =", number)
复制代码
输出:
  1. Random Number = 47
复制代码
到目前为止,我们已经从用户那里获取了极限值,并在这些极限值内生成了一个随机整数。我们必须把用户的猜测与随机生成的数字进行比较。
这可以通过将input() 方法与一个简单的if/else块相结合来实现。
代码:
  1. guess = int(input("Guess the number"))
  2. if guess == number:
  3.     print("Yes, You are correct")
  4. else:
  5.     print("Incorrect Answer!")
复制代码
输出:
  1. Guess the number15
  2. Incorrect Answer!
复制代码
这里唯一的问题是,它没有给我们提供猜出正确数字的线索。它告诉我们是对还是错,这不是一个有趣的游戏方式。
我们可以通过放置多个if语句并在一个循环中执行这些语句来改进,直到用户猜对数字。
代码:
  1. win = False
  2. while win != True:
  3.     guess = int(input("Guess the number"))
  4.     if guess == number:
  5.         win = True
  6.         print("Yes, You are correct")
  7.     elif guess < number:
  8.         print("You are a little shorter")
  9.     else:
  10.         print("You are a little larger")
复制代码
输出:
  1. Guess the number5
  2. You are a little shorter
  3. Guess the number95
  4. You are a little larger
  5. Guess the number47
  6. Yes, You are correct
复制代码
我们使用了一个while 循环,因为我们不知道用户要经过多少次试验才能得到正确的答案。我们创建了一个标志变量win ,告诉while循环何时停止,而win 变量被设置为False ,直到用户猜对数字为止。
我们的数字猜测游戏几乎已经完成了,其中唯一缺少的是计算用户在达到正确答案时的试验次数的得分计数器。我们可以修改我们之前的代码,在循环中使用一个计数器变量。
下面的代码片段显示了我们如何在数字猜谜游戏中添加一个计分机制。
代码:
  1. win = False
  2. steps = 0
  3. while win != True:
  4.     guess = int(input("Guess the number"))
  5.     steps += 1
  6.     if guess == number:
  7.         win = True
  8.         print("Yes, You are correct")
  9.         print("Number of Trails =", steps)
  10.     elif guess < number:
  11.         print("You are a little shorter")
  12.     else:
  13.         print("You are a little larger")
复制代码
输出:
  1. Guess the number22
  2. You are a little shorter
  3. Guess the number44
  4. You are a little shorter
  5. Guess the number47
  6. Yes, You are correct
  7. Number of Trails = 3
复制代码
我们添加了一个步骤计数器,记录了用户完成游戏所花的试验次数。
代码:
  1. import random
  2. lower_limit = int(input("Please enter the Lower Limit"))
  3. upper_limit = int(input("Please enter the Upper Limit"))
  4. number = random.randint(lower_limit, upper_limit)
  5. win = False
  6. steps = 0  #Python小白学习交流群:711312441
  7. while win != True:
  8.     guess = int(input("Guess the number"))
  9.     steps += 1
  10.     if guess == number:
  11.         win = True
  12.         print("Yes, You are correct")
  13.         print("Number of Trails =", steps)
  14.     elif guess < number:
  15.         print("You are a little shorter")
  16.     else:
  17.         print("You are a little larger")
复制代码
输出:
  1. Please enter the Lower Limit0
  2. Please enter the Upper Limit10
  3. Guess the number5
  4. You are a little larger
  5. Guess the number2
  6. You are a little shorter
  7. Guess the number3
  8. You are a little shorter
  9. Guess the number4
  10. Yes, You are correct
  11. Number of Trails = 4
复制代码
输出显示,游戏只运行了一次。它不会让用户继续玩游戏,直到他们感到厌烦。
我们可以把整个程序封闭在另一个循环中,反复执行游戏,直到用户想退出游戏。
完整的代码:
  1. import random
  2. play = True
  3. while play == True:
  4.     lower_limit = int(input("Please enter the Lower Limit"))
  5.     upper_limit = int(input("Please enter the Upper Limit"))
  6.     number = random.randint(lower_limit, upper_limit)
  7.     win = False
  8.     steps = 0
  9.     while win != True:
  10.         guess = int(input("Guess the number"))
  11.         steps += 1
  12.         if guess == number:
  13.             win = True
  14.             print("Yes, You are correct")
  15.             print("Number of Trails =", steps)
  16.         elif guess < number:
  17.             print("You are a little shorter")
  18.         else:
  19.             print("You are a little larger")
  20.     replay = int(input("Enter -1 to replay the game."))
  21.     if replay != -1:
  22.         play = False
复制代码
输出:
  1. Please enter the Lower Limit1
  2. Please enter the Upper Limit3
  3. Guess the number2
  4. You are a little larger
  5. Guess the number1
  6. Yes, You are correct
  7. Number of Trails = 2
  8. Enter -1 to replay the game.-1
  9. Please enter the Lower Limit1
  10. Please enter the Upper Limit3
  11. Guess the number2
  12. You are a little larger
  13. Guess the number1
  14. Yes, You are correct
  15. Number of Trails = 2
  16. Enter -1 to replay the game.0
复制代码
我们创建了另一个标志变量,play ,告诉我们的外部或主循环何时停止执行。如果用户提供了除-1 以外的任何数字,外循环将停止执行,假设用户已经厌倦了反复玩这个游戏。
这是一个非常简单的游戏实现。我们在代码中只导入了random 模块来生成一个随机数。

来源:https://www.cnblogs.com/python1111/p/17646922.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具