【问题标题】:Using user input to find an element in a list使用用户输入在列表中查找元素
【发布时间】:2016-11-16 02:37:59
【问题描述】:

好吧,本来应该很简单的事情却要了我的命。我在列表中有一个周一至周日的列表,我需要让用户给出一个数字 1-7 以显示相应的日期

我有这个,它可以工作,但似乎应该有更好的方法来完成它

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print('Enter a day number [1-7]: ', end="")
number=input()
if number == '1' :
    print(days[0])
elif number == '2' :
    print(days[1])
elif number == '3' :
    print(days[2])
elif number == '4' :
    print(days[3])
elif number == '5' :
    print(days[4])
elif number == '6' :
    print(days[5])
elif number == '7' :
    print(days[6])

【问题讨论】:

  • number=int(input()) 然后直接索引列表;即print(days[number-1])。当然,您应该在 try-except 中换行以减少超出可接受范围的值。

标签: python list python-3.x input


【解决方案1】:

你可以用字典来做到这一点:

days = {'1': 'Monday',
        '2': 'Tuesday',
        '3': 'Wednesday',
        '4': 'Thursday',
        '5': 'Friday',
        '6': 'Saturday',
        '7': 'Sunday'}

number = input()
return days[number]

与使用简单列表(由于您期望整数)相比,这样做的优点是您以后可能希望接受非数字输入,例如"one"。您只需要重命名字典的键即可。

【讨论】:

    【解决方案2】:

    怎么样:

    number = int(input())
    print(days[number - 1])
    

    【讨论】:

      【解决方案3】:

      正如@Jim Fasarakis-Hilliard 所建议的,您需要使用tryexcept 方法来捕获不需要的输入。

      days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
      print('Enter a day number [1-7]: ', end="")
      
      try:
          number=int(input('enter day'))
          if number <= 7 and number > 0:
              print(days[number-1])
          else:
              raise Exception
      except ValueError:
          print('must be an integer')
      except Exception :
          print('number must be below 7')
      

      ValurError 将捕获如果输入的数字不是数字, 如果输入的数字不在0&lt;n&lt;7 范围内,raise Exception 将捕获

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多