【问题标题】:How to give out an Error instead of the system error [duplicate]如何发出错误而不是系统错误[重复]
【发布时间】:2018-03-30 14:04:14
【问题描述】:

嘿,我在 python3 中有我的数字猜测器。但是如果用户输入字母而不是数字,我想给出一个错误。当我输入一个字母时,它会说

Traceback (most recent call last):
  File "nummerlol.py", line 14, in <module>
    guess = int(guess)
ValueError: invalid literal for int() with base 10:"

有没有办法改变这个错误?谢谢

import time
import random 
from secrets import randbelow
guesscount = 0
print("Hey whats your name")
name = input()
number = randbelow(20)
print("The Number is between 1 & 20")
while guesscount < 6:
    print("Guess.")
    guess = input()
    guess = int(guess)
    guesscount = guesscount + 1
    if guess < number:
        print("My Number is bigger")
    if guess > number:
        print("My Number is lower")
    if guess == number:
        break
if guess == number :
guesscount = str(guesscount)
print("Nice",name ,".")
print("You needed" ,guesscount ,"Tries")
if guess != number:
    number = str(number)
    print("Bruh,My Number was" ,number)`

【问题讨论】:

  • 要更改ErrorType ValueError还是错误信息
  • 请正确缩进您的代码。
  • give out an Error 是什么意思。当用户给出无效响应时,您需要描述您希望发生的情况。

标签: python string error-handling numbers int


【解决方案1】:

您可以使用 try-except 循环。使用continue(如下),用户可以继续猜测。如果您希望脚本以更丰富的信息中断,您也可以将自己的异常替换为 printcontinue

import time
import random 
from secrets import randbelow
guesscount = 0
print("Hey whats your name")
name = input()
number = randbelow(20)
print("The Number is between 1 & 20")
while guesscount < 6:
    print("Guess.")
    guess = input()
    try:
        guess = int(guess)
    except:
        print("That is not a number")
        continue
    guesscount = guesscount + 1
    if guess < number:
        print("My Number is bigger")
    if guess > number:
        print("My Number is lower")
    if guess == number:
        break
if guess == number :
    guesscount = str(guesscount)
print("Nice",name ,".")
print("You needed" ,guesscount ,"Tries")
if guess != number:
    number = str(number)
    print("Bruh,My Number was" ,number)

【讨论】:

  • thx.为我工作:D
【解决方案2】:

您的similar question 已经存在,但我还是会回答您的问题。

如您所知,您收到回溯响应的原因是您在调用 int(guess) 时尝试将非整数转换为整数。您可以使用 try/except 块捕获此异常。例如,您可以用以下代码替换有问题的代码行:

while True:
  try:
    guess = int(guess)
    break
  except ValueError:
    print("You must enter a valid number.")

此代码将导致程序要求用户输入,直到该输入有效。请查看此 Python3 handling errors and exceptions 文档以获取更多信息。

【讨论】:

  • 如果您将此问题确定为重复问题,那么您甚至不应该回答 - 要么投票结束问题,要么您还不能发布链接到重复问题的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 2012-03-25
  • 2019-04-01
  • 2020-08-25
  • 1970-01-01
相关资源
最近更新 更多