【问题标题】:Python3: creating error for input of negativePython3:为负输入创建错误
【发布时间】:2015-09-30 08:34:03
【问题描述】:

参加入门课程并需要创建一个过度/不足猜谜游戏。如果有人输入负数或非整数,我想通过创建错误来微调我的用户输入。我正确报告了非整数错误,并且负数正确循环返回,但负数不会打印我的错误消息。

#Number of plays
def get_plays(msg):
    while True:
        try:
            x = (int(input(msg)))

        except ValueError:
            print ("Integer numbers only please.")
        except:
            if x <=0:
                print ("Positive numbers only please.")

i = get_plays("\nHow many times would you like to play?")
print ("The game will play " +str(i)+" times.")

另外,如果我想使用类似的设置来为 1 到 20 之间的任何非整数负数产生错误,这会是什么样子?

【问题讨论】:

  • 您认为except: 块将执行什么输入?
  • if 语句移动到try 部分可能。

标签: python python-3.x error-handling


【解决方案1】:

试试:

def get_plays(msg):
    while True:
        try:
            x = (int(input(msg)))
            if x <=0:
                print("Positive numbers only please.")
                continue
            if x not in range(20):
                print("Enter a number between 1 - 20.")
                continue
            return x
        except ValueError:
            print("Integer numbers only please.")

它只接受 1 到 20 之间的正数

【讨论】:

  • 是的,第二部分就是这样!与我的想法一致,只是花了太多时间查看代码才能看到我的错误。谢谢!
【解决方案2】:

这个部分有问题

except:
    if x <=0:

空的except 子句触发任何尚未捕获的错误,但负数不会触发异常。你想要这样的东西。请注意,在try 子句中,我们可以将x 视为已经是一个int,因为我们可以假设没有ValueError 被抛出。

def get_plays(msg):
    while True:
        try:
            x = (int(input(msg)))
            if x <=0:
                print ("Positive numbers only please.")
            else:
                return x

        except ValueError:
            print ("Integer numbers only please.")

【讨论】:

  • 是的,这就是我在看的东西!与我的想法一致,只是花了太多时间查看代码才发现我的错误。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多