【问题标题】:Figuring out except ValueError弄清楚除了 ValueError
【发布时间】:2019-05-27 01:17:44
【问题描述】:

跟随 Al Sweigarts 的 Python 课程并尝试修改他的 cat 代码。我可以使用 if 和 elif 语句很好地输入“除了 ValueError”,但我认为使用 while 语句我搞砸了。当用户输入错误的内容时,我希望这个简单的代码可以重复,而这些内容目前正在运行。我只需要输入一个地址为非整数的东西作为输入。

这与没有使用中断/继续语句有关吗?

print('How many cats do you got')
numCats = int(input())

while numCats < 0:
    print('That is not a valid number')
    print('How many cats do you got')
    numCats = int(input())

if numCats >= 4:
        print('That is a lot of cats')

elif numCats < 4:
    print('That is not a lot of cats')

except ValueError:
    print('That was not a valid number')

我希望代码在输入无效数字时重复,同时在非整数值之后重复。我无法超越除了 ValueError 部分。谢谢!

【问题讨论】:

  • except ValueError: 需要一个 try,而您发布的代码中缺少该 try
  • @Austin 不在代码底部?除了 ValueError 出现在倒数第二行
  • @Austin 也许我误读了你的评论,但这是我目前遇到的问题。
  • try 块之前应该有一个 except 块。
  • @Austin 嗯,它仍然告诉我“除外”部分是无效的语法。我应该尝试取消 while 语句而只使用 if 和 elif 吗?我认为重复代码会更容易,直到使用 while 代码给出有效答案,但可能不是哈哈。

标签: python valueerror except


【解决方案1】:

except 块需要 try 块。在try 块中发现异常,如果发现则运行except 子句。

while True:
    try:        
        print('How many cats do you got: ')
        numCats = int(input())
        if numCats >= 0:
            break
        else:
            print('That was not a valid number')
    except ValueError:
        print('That was not a valid number')

if numCats >= 4:
    print('That is a lot of cats')

elif numCats < 4:
    print('That is not a lot of cats')

【讨论】:

  • 好的,我现在知道了!当我应该把它缩进到 while 语句下面时,我试图将它包含在底部。谢谢!
  • 这仍然不正确,如果用户在第一个问题中首先输入了无效的输入。 ValueError: invalid literal for int() with base 10: 'three'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2013-05-19
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多