Python猜数字游戏-无法显示胜利

时间:2020-06-15 07:32:02

标签: python

我对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

我再次怀疑这是否令人困惑,因为我发现很难尝试解释我的问题。任何建议将不胜感激

1 个答案:

答案 0 :(得分:1)

请考虑使用循环而不是使用if语句来进行所有猜测,这样您的代码将更加紧凑,并且可以根据需要更改循环计数器。

此外,当您获得用户输入时,请将其转换为整数,以便可以比较数字,否则用户输入将保留为字符串。查看以下解决方案:

#This is a guess the number game
import random

print("What is your name?")
myName = input()
print("Well, " + myName + ", I am thinking of a number between 1 and 20")

loopCounter = 0
myNumber = random.randint(1, 20)

while loopCounter < 6:
    print("Take a guess.")
    guessNumber = input()
    guessNumber = int(guessNumber)
    loopCounter = loopCounter + 1

    if guessNumber < myNumber:
        print("Your guess is too low.")
    elif guessNumber > myNumber:
        print("Your guess is too high.")
    else:
        loopCounter = str(loopCounter)
        print("Well done, " + myName + ", you guessed the number in " + loopCounter + " guesses!")
        break

if guessNumber != myNumber:
    myNumber = str(myNumber)
    print("Nope. The number was " + myNumber)

希望这会有所帮助。

相关问题