4 回答
TA贡献1821条经验 获得超4个赞
有许多不同的方法可以解决这样的问题,您必须考虑它们并决定哪种方法最适合您的编程风格。
使 guess_left 成为全局变量: 从纯技术的角度来看,您可以创建guess_left
一个全局变量以便在rand_guess
函数外部访问它,
返回剩余的猜测数量 然而,通常最好不要创建太多全局变量,因为它会导致代码难以阅读(并且经常有错误)。您是否考虑过返回rand_guess
剩余的猜测数量。
将游戏结束状态打印消息移动到 rand_guess 函数中:您还可以将游戏结束时的所有打印语句移动到函数内部 rand_guess
,即您当前返回 true 或 false 的位置。
在考虑选择哪种解决方案时,请考虑以下事项:一个月后我是否仍能理解这段代码的作用?其他人能理解这段代码的作用吗?
TA贡献2036条经验 获得超8个赞
这是一个从一个函数返回多个结果的例子。
if flag == 1:
return [True, guess_left]
else:
return [False, guess_left]
if __name__ == '__main__':
result = rand_guess()
if result[0] is True:
guess_left = result[1]
print(f"Congrats. You won with {guess_left} tries left.")
else:
print("Sorry, you lost the game!")
TA贡献1735条经验 获得超5个赞
好吧,定义一个全局变量是可能的,但通常被认为是糟糕的风格,因为随着项目的增长,它们往往很难跟踪。范围界定是一件美丽的事情!你为什么不尝试这样做,返回剩下的猜测次数:
def rand_guess():
random_number = generator()
for i in range(25, 0, -1):
guess = int(input("Please enter your lucky number: "))
if guess == random_number:
return i-1
return 0
if __name__ == '__main__':
guesses_left = rand_guess()
if guesses_left:
print(f"Congrats! You won with {guesses_left} guesses left.")
else:
print("Sorry, you lost the game!")
TA贡献1906条经验 获得超10个赞
您可以初始化guess_left为全局变量,并在函数内部不断对其进行更新。
像这样:
from random import randint
guess_left = 25
def generator():
return randint(1, 1024)
def rand_guess():
random_number = generator()
flag = 0
global guess_left
while guess_left > 0:
guess = int(input("Please enter your lucky number: "))
if guess == random_number:
flag = 1
break
elif guess < random_number:
guess_left -= 1
print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")
else:
guess_left -= 1
print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")
if flag == 1:
return True
else:
return False
if __name__ == '__main__':
if rand_guess() is True:
print(f"Congrats. You won with str(guess_left) tries left.")
else:
print("Sorry, you lost the game!")
添加回答
举报