【问题标题】:Handling errors and exceptions in Hangman python program处理 Hangman python 程序中的错误和异常
【发布时间】:2013-10-24 20:50:20
【问题描述】:
print("Welcome to Hangman! Guess the mystery word with less than 6 mistakes!")

words= ['utopian','fairy','tree','monday','blue'] 

while True:
    try:
        i = int(input("Please enter an integer number (0<=number<10) to choose the word in the list: "))
        break
    except ValueError:
        if(i!=int):
            print("Must be an integer input.")
        else:
            print("Empty input.")

开始处理我的 Hangman 程序的异常,我又遇到了另一个问题。你可以运行这个程序,看看我哪里出错了。在我有这样的代码之前,我希望值错误是具体的: 除了ValueError: print("值​​错误!") 但现在我希望它具体到错误是什么。因此,如果用户输入一个空输入,我希望程序告诉他们他们打印了一个空字符串。如果他们输入了一个字母,我想专门捕捉那个错误。见鬼,如果他们在列表范围之外输入一个整数,我希望有一个捕获的索引错误。

【问题讨论】:

    标签: python exception try-catch


    【解决方案1】:

    i 未在 except 块中定义。在尝试解析整数之前,您应该检查用户是否没有输入任何内容:

    user_input = input("message")
    if not user_input:
        print("Empty input.")
    else:
        try:
            i = int(user_input)
            break
        except ValueError:
            print("Must be an integer input.")
    

    【讨论】:

      【解决方案2】:

      要检查i 是否为空,我首先会这样做:

      answer = input()  # Save the raw answer
      
      if answer in (None, ''):
          print('Value was empty!')
          continue
      

      那你可以试试把它转成整数:

      try:
          i = int(answer)
      except ValueError:
          print('Your answer was not an integer')
          continue
      

      最后,要检查i 是否在您的单词列表中,您可以轻松做到:

      try:
          word = words[i]
      except IndexError:
          print("Value was out of range!)
      else:
          return word
      

      将所有这些都放在一个函数中,您可以像我一样使用return word 轻松退出您的while True 循环,而不必担心中断。

      【讨论】:

      猜你喜欢
      • 2013-11-03
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多