【问题标题】:Having trouble getting my else statement to print in a while loop无法让我的 else 语句在 while 循环中打印
【发布时间】:2017-03-11 21:44:09
【问题描述】:

对 Python 还是很陌生,所以如果这里有任何问题,我深表歉意。这适用于您输入数字并返回值的程序。你必须输入一个数字,所以当用户输入一个字符串时,我试图让它说“需要不同的值”。但是,我在输入周围有一个 int(),这意味着当我输入字符串时出现以下错误:

ValueError: int() 以 10 为底的无效文字

我的代码如下:

while True:
 OVR = int(input('OVR?'))
 if OVR == 0:
   break
 elif OVR < 50:
   print('0.75M')
 elif OVR >= 50 and OVR < 60:
   print('8M')
 elif OVR >= 60 and OVR <= 70:
   print('15M')
 elif OVR > 70 and OVR <= 82:
   print('30M')
 elif OVR > 82:
   print("He's the GOAT, what do you think he wants?")
 else:
   print('different values needed')

我知道拥有所有这些 elif 可能是个坏主意,因此我最终会将其整合到一个公式中。如前所述,我的主要目标是我想这样做,以便在用户输入字符串时打印“所需的不同值”。我考虑过 try/except 语句,但如果我正确理解它们,它们并不是真正用于计算和打印的东西,也不能接受这些 elif。

【问题讨论】:

标签: python if-statement while-loop


【解决方案1】:

int 转换封装在try/except 块中。

while True:
    try:
        OVR = int(input('OVR?'))
    except ValueError:
        print('different values needed')
        continue
    # OVR an integer value, handle it as needed...

【讨论】:

  • 感谢您的信息!这似乎是一个非常简单的解决方案,我会尽量记住这一点以备不时之需。看起来我只是误解了 try/except 的使用方式。
【解决方案2】:

您可以使用 try/except 语句来打印消息。

try:
    OVR = int(input("OVR?"))
except ValueError:
    print("different values needed")

【讨论】:

  • 谢谢!我最初误解了如何使用 try/except 语句。
  • 是的,没问题。但是,我注意到在我的程序中使用它时,在后面的几行中有算术计算,如果输入字符串,仍然会返回错误。所以 Igor Raush 的建议是好的,因为它会一直循环直到输入一个有效的整数(我相信)。我自己对 python 也很陌生!
  • 看看这个,我自己问了一个非常相似的问题,回答的人在他的回答中解释了一切。
  • stackoverflow.com/questions/40224243/… 对不起,多个 cmets...我现在正在使用平板电脑,这让我很伤心
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2012-06-18
相关资源
最近更新 更多