Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Input和if-else语句正在做一些奇怪的事情_Python - Fatal编程技术网

Python Input和if-else语句正在做一些奇怪的事情

Python Input和if-else语句正在做一些奇怪的事情,python,Python,我用Python做了一个数字猜测游戏,它的作用是要求一个介于1和100之间的数字。你可以在容易和难的关卡之间选择。易级有10次机会,硬级有5次机会。问题是,如果你给level输入的不是简单的或硬的(包括大写的变体),它会做一些奇怪的事情。我需要一个解决办法。这是密码 import random print("Welcome to the number guessing game.") random_number: int = random.randint(0, 101) pr

我用Python做了一个数字猜测游戏,它的作用是要求一个介于1和100之间的数字。你可以在容易和难的关卡之间选择。易级有10次机会,硬级有5次机会。问题是,如果你给level输入的不是简单的或硬的(包括大写的变体),它会做一些奇怪的事情。我需要一个解决办法。这是密码

import random
print("Welcome to the number guessing game.")
random_number: int = random.randint(0, 101)
print("I'm thinking of a number between 1 and 100.")

total_chances = 0

game_level = input("Type a difficulty. Type 'easy' or 'hard': ").lower()

if game_level == 'easy':
    total_chances = 10
elif game_level == 'hard':
    total_chances = 5
else:
    print("Please make sure that you typed the correct command")

is_game_over = False

while not is_game_over:
    print(f"You have {total_chances} chances remaining to guess the number.")
    guess_a_number = int(input("Guess a number: "))

    if guess_a_number == random_number:
        is_game_over = True
        print(f"You got it!! The answer was {random_number}. \nYou win.")
    elif guess_a_number > random_number:
        total_chances -= 1
        print("Too high.\nGuess again.")
    elif guess_a_number < random_number:
        total_chances -= 1
        print("Too low.\nGuess again.")
    else:
        print("Guess a number. Please make a correct numerical input.")

    if total_chances <= 0:
        is_game_over = True
        print("You ran out of chances. You lose!!")
        print(f"The answer was {random_number}")
随机导入
打印(“欢迎参加猜数字游戏”)
随机数:int=random.randint(0,101)
打印(“我想的是一个介于1和100之间的数字。”)
总机会=0
游戏等级=输入(“输入难度。输入‘容易’或‘难’:”)。下限()
如果游戏等级==‘简单’:
总机会=10
elif game_level=='hard':
总机会=5
其他:
打印(“请确保键入了正确的命令”)
游戏结束了吗
虽然游戏尚未结束:
打印(f“您还有{total_chances}次机会来猜数字。”)
猜一个数字=int(输入(“猜一个数字:”)
如果猜测数=随机数:
游戏结束了吗
打印(f“你明白了!!答案是{random\u number}.\n你赢了。”)
elif猜数>随机数:
总机会-=1
打印(“太高。\n请再次按。”)
elif猜测数<随机数:
总机会-=1
打印(“太低。\n请再次按”)
其他:
打印(“猜一个数字。请输入正确的数字。”)

如果总概率代码中的问题是,当用户键入错误的游戏级别时,它只打印警告消息,然后继续执行
total\u chances
为0,并且
游戏结束了
False
。由于后者是
False
while
循环,即猜测阶段无论如何都会运行,即使
总机会为零

试一试

游戏结束了吗=False
如果游戏等级==‘简单’:
总机会=10
elif game_level=='hard':
总机会=5
其他:
打印(“请确保键入了正确的命令”)
游戏结束了吗

当用户输入错误的难度等级时,这将结束游戏;由于
是游戏结束
真的
,因此跳过
while
循环。

代码中的问题是,当用户键入错误的游戏级别时,它只打印警告消息,然后继续执行
总机会
为0,
是游戏结束
接近
。由于后者是
False
while
循环,即猜测阶段无论如何都会运行,即使
总机会为零

试一试

游戏结束了吗=False
如果游戏等级==‘简单’:
总机会=10
elif game_level=='hard':
总机会=5
其他:
打印(“请确保键入了正确的命令”)
游戏结束了吗

当用户输入错误的难度等级时,这将结束游戏;由于
是游戏结束
真的
,因此跳过
while
循环。

您只需添加while循环即可获得输入,直到输入正确的难度级别,如下所示:

total_chances = 0
while(total_chances==0):
    game_level = input("Type a difficulty. Type 'easy' or 'hard': ").lower()
    
    if game_level == 'easy':
        total_chances = 10
    elif game_level == 'hard':
        total_chances = 5
    else:
        print("Please make sure that you typed the correct command")

您可以添加一个while循环来获取输入,直到输入正确的难度级别,如下所示:

total_chances = 0
while(total_chances==0):
    game_level = input("Type a difficulty. Type 'easy' or 'hard': ").lower()
    
    if game_level == 'easy':
        total_chances = 10
    elif game_level == 'hard':
        total_chances = 5
    else:
        print("Please make sure that you typed the correct command")

你把什么叫做“奇怪的东西”
?你在说什么奇怪的东西?打印时有错误吗?或者猜测部分?如果他们输入的不是有效的整数,您将得到一个异常。你需要准备好处理这个异常。事实上,当我为游戏级输入键入其他内容时,例如laksjf。那么这个计划就不会结束了。但现在已经修好了。我找不到这个问题的好题目。你能推荐一个吗?它对我很有效,伙计,有什么问题吗?你叫什么
奇怪的东西
?你在说什么奇怪的东西?打印时有错误吗?或者猜测部分?如果他们输入的不是有效的整数,您将得到一个异常。你需要准备好处理这个异常。事实上,当我为游戏级输入键入其他内容时,例如laksjf。那么这个计划就不会结束了。但现在已经修好了。我找不到这个问题的好题目。你能推荐一个吗?它对我非常有效,伙计,有什么问题吗?我会提出一个值错误,重新提示问题,或者只使用
return
。这是一个输入错误,并没有失去机会,这就是游戏结束的原因。我同意;我将使用
while
循环执行后者。但是,由于OP不清楚他/她想要什么,我将把它交给OP的工作。我会提出一个ValueError,重新提示问题,或者只使用
return
。这是一个输入错误,并没有失去机会,这就是游戏结束的原因。我同意;我将使用
while
循环执行后者。但由于OP不清楚他/她想要什么,我将把它留给OP的工作。