【问题标题】:Output response if the input contains no numbers in Python如果输入在 Python 中不包含数字,则输出响应
【发布时间】:2017-08-24 03:52:46
【问题描述】:

我尝试了 for/except 但我无法让它工作

代码如下:

#This is a guess the number game.
import random
secretNumber = random.randint(1, 20)
print('I am thinking of a number between 1 and 20.')
# Ask the player to guess 6 times.
for guessesTaken in range(1, 7):
    print('Take a guess.')
    guess = int(input())
    if guess < secretNumber:
        print('Your guess is too low.')
    elif guess > secretNumber:
        print('Your guess is too high.')
    else:
        break # This condition is the correct guess!
if guess == secretNumber:
    print('Good job! You guessed my number in ' + str(guessesTaken) + ' guesses!')
else:
    print('Nope. The number I was thinking of was ' + str(secretNumber))

~~~~ 显然,如果我输入一个字符串,它将不满足任何标准,它只会因错误而中断。我不希望它因错误而中断。我该怎么办? 错误是(当用“测试”一词而不是数字响应时):

Traceback (most recent call last):
 line 8, in <module>
    guess = int(input())
ValueError: invalid literal for int() with base 10: 'test'

【问题讨论】:

  • 捕获ValueError 异常,例如- except ValueError: 并处理它(例如 pass 忽略)。

标签: python random numbers break


【解决方案1】:

您可以使用try/except 来捕获ValueError 并为其添加一个循环以继续要求输入而不消耗guessTaken,直到输入一个数字。例如:

for guessesTaken in range(1, 7):
    print('Take a guess.')
    guess = None
    while guess is None:
        try:
            guess = int(input())
        except ValueError:
            print('Please enter a number.')
    if guess < secretNumber:
        print('Your guess is too low.')
    elif guess > secretNumber:
        print('Your guess is too high.')
    else:
        break # This condition is the correct guess!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 2015-04-30
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2021-08-14
    • 2012-09-04
    相关资源
    最近更新 更多