【问题标题】:Python dictionary; receive user input; enter error code when out of rangePython字典;接收用户输入;超出范围时输入错误代码
【发布时间】:2021-10-31 21:18:14
【问题描述】:

我正在制作字典!我试图让用户选择 1 - 10 之间的数字 为其生成韩语单词。 我能够让用户输入打印出正确的翻译,但我希望我的代码 如果未选择 1 - 10 之间的数字,则告诉用户重试。脚后跟。

#1 is key
#all keys need to be unique
#Hana is value
print ("Welcome to the Korean Converter!")

user = int(input("Enter a number between 1 and 10: "))
        
koreanConversion = {
    1: "Hana",
    2: "Tul",
    3: "Set",
    4: "Net",
    5: "Ta Sut",
    6: "Yuh Sut",
    7: "Il Jop",
    8: "Yu Dulb",
    9: "Ah Hop",
   10: "Yul"

}


print (koreanConversion[user])


#else: 
 #   user = int(input("Please try again: "))
 #if (koreanConversion[user]) != [user]
  #   print("Please try again.")

【问题讨论】:

  • 使用 .get 代替 [""] 所以:print(koreanConversion.get(user))
  • 以上是一种解决方案。但是,请求原谅通常比请求许可更好:即捕获当用户输入不在字典中的键值时遇到的异常

标签: python dictionary if-statement user-input do-while


【解决方案1】:

检查一下


koreanConversion = {
    1: "Hana",
    2: "Tul",
    3: "Set",
    4: "Net",
    5: "Ta Sut",
    6: "Yuh Sut",
    7: "Il Jop",
    8: "Yu Dulb",
    9: "Ah Hop",
    10: "Yul"
}


print("Welcome to the Korean Converter!")

while True:
    _input = input("Enter a number between 1 and 10: ")
    number = int(_input)
    if koreanConversion.get(number, None):
        print(koreanConversion[number])
        break
    else:
        print('Try again.')
        continue

【讨论】:

  • 这很有帮助!!谢谢!!
  • 不客气,很高兴为您提供帮助。
【解决方案2】:

当您的输入有一些未发现的情况时,使用 [] 通常不是一个好主意,因此请使用 .get 方法来处理字典:

print(koreanConversion.get(user, ""))

这意味着如果项目不存在,则使用用户密钥获取项目 print "" 为空,这应该可以解决您的问题

【讨论】:

    【解决方案3】:

    我建议你尝试使用列表:

    def KoreanConverter():
        koreanConversion = ["Hana", "Tul", "Set", "Net", "Ta Sut", "Yuh Sut", "Il Jop", "Yu Dulb", "Ah Hop", "Yul"]
    
        print("Welcome to the Korean Converter!")
        i = int(input("Enter a number between 1 and 10: ")) - 1
        if not i in range(0, 9):
            return "Please provide a valid number between 1 and 10!"
        
        return koreanConversion[i]
            
    playing = True
    while playing: 
        print(KoreanConverter())
        playing = ("y" == input("Keep converting ? y/N")
    

    【讨论】:

    • 谢谢!!我真的很感激。
    【解决方案4】:

    一些人建议使用.get() 和/或提前检查该项目是否在字典中。另一种选择是使用try/except:

    while True:
        try:
            print(koreanConversion[
                int(input("Enter a number between 1 and 10: "))
            ])
            break
        except (KeyError, ValueError):
            print('Try again.')
    

    以这种方式使用异常处理的一个好处是您可以在一个地方处理两种异常:

    • 如果int() 转换失败,则会引发ValueError
    • 如果KeyError 是有效的int 但不在您的字典中,则会引发KeyError

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多