【发布时间】:2020-10-04 13:55:33
【问题描述】:
我对 Python 还是很陌生,所以如果这太简单或太愚蠢了,我深表歉意,但我最近接到了创建一个猜数游戏的任务。游戏有 100 个数字,编号从 1 到 100,并且还会有一个编号为 1 到 6 的骰子掷骰,以确定您获得了多少次尝试(例如,如果用户掷出 4,用户将有 4 个轮次尝试猜1 到 100 之间的数字)。到目前为止,我设法完成了大部分工作,但是,在我自己测试程序时,当我真正得到正确答案时,它并没有显示出胜利。
import random
random_number = random.randint(1, 5)#I made the range from 1 to 5 to make my chances of guessing the correct number greater#
guessnum_dice = random.randint(1, 6)
guess_count = 0
guess_limit = guessnum_dice
out_of_guesses = False
win = False
# This name function prints out the users name; this is because the task asks me to save each game's
# statisitics and record them within an external text file. Still haven't figured out how to do that
# as well :(
def name_function():
x = input("Enter your name: ")
print("Hello, " + x)
return
name_function()
user_roll = input("Type \"roll\" to roll the dice: ")
if user_roll == "roll":
print("You have "+str(guessnum_dice) + " guesses. Use them wisely!")
if guessnum_dice == 1:
user_guess = input("Guess the secret number: ")
if user_guess != random_number:
out_of_guesses = True
if guessnum_dice == 2:
while guess_count < guess_limit:
user_guess = input("Guess the secret number: ")
guess_count += 1
if user_guess < str(random_number):
print("Higher!")
elif user_guess > str(random_number):
print("Lower")
#Here Ive tried making the user's guess equal to the number, but to no success
elif user_guess == random_number:
win = True
print("You Win")
else:
out_of_guesses = True
if guessnum_dice == 3:
while guess_count < guess_limit:
user_guess = input("Guess the secret number: ")
guess_count += 1
if user_guess < str(random_number):
print("Higher!")
elif user_guess > str(random_number):
print("Lower")
elif user_guess == random_number:
win = True
print("You Win")
else:
out_of_guesses = True
if guessnum_dice == 4:
while guess_count < guess_limit:
user_guess = input("Guess the secret number: ")
guess_count += 1
if user_guess < str(random_number):
print("Higher!")
elif user_guess > str(random_number):
print("Lower")
elif user_guess == random_number:
win = True
print("You Win")
else:
out_of_guesses = True
if guessnum_dice == 5:
while guess_count < guess_limit:
user_guess = input("Guess the secret number: ")
guess_count += 1
if user_guess < str(random_number):
print("Higher!")
elif user_guess > str(random_number):
print("Lower")
elif user_guess == random_number:
win = True
print("You Win")
else:
out_of_guesses = True
if guessnum_dice == 6:
while guess_count < guess_limit:
user_guess = input("Guess the secret number: ")
guess_count += 1
if user_guess < str(random_number):
print("Higher!")
elif user_guess > str(random_number):
print("Lower")
elif user_guess == random_number:
win = True
print("You Win")
else:
out_of_guesses = True
if out_of_guesses:
print("You Lose! The number: " + str(random_number))
if win == True:
print("You won")
这是输出:
Enter your name: Gary
Hello, Gary
Type "roll" to roll the dice: roll
You have 6 guesses. Use them wisely!
Guess the secret number: 4
Lower
Guess the secret number: 3
Lower
Guess the secret number: 2 ### Here you can see that 2 is the correct answer, but it wont display a-
Guess the secret number: 2 ### -win no matter how many times it gets entered
Guess the secret number: 2
Guess the secret number: 1
Higher!
You Lose! The number: 2
Process finished with exit code 0
如果这看起来令人困惑,我再次道歉,因为我发现很难尝试解释我的问题。任何建议将不胜感激
【问题讨论】:
-
与您的问题没有直接关系,但您有几个以
if guessnum_dice == ...开头的代码块。这些代码块彼此有何不同/您能想出一种方法来整合其中的一些逻辑吗? -
您将字符串与字符串进行比较,就好像它们是整数一样。这在 Python 中不像预期的那样工作。将
int与int进行比较。 -
另一个旁注:是否有可能既没有猜测又赢了?还是这两种相互排斥的最终状态?有没有一种方法可以基于此修改您的代码?
-
您可以简单地使用
for循环来循环每个掷骰结果,您不需要那些复杂的if语句。
标签: python