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