【问题标题】:Can't figure out how to assign a number to a element in a list in python无法弄清楚如何为python列表中的元素分配一个数字
【发布时间】:2021-09-22 20:46:55
【问题描述】:

我是一个相对较新的程序员,我不知道如何为列表中的某些元素创建变量。我正在尝试这样做,以便我可以询问某个数字,然后控制台将打印列表的某个元素。这是我在进入下一个 python 级别之前必须做的练习。该编程是通过一个名为 codester 的网站完成的。

这是我制作这个程序的指示:

  1. 列出了 5 种食物(使用任何名称)。
  2. 使用索引变量将每种食物打印到控制台 访问列表中的每个元素。 (提示:For 循环)
  3. 向用户询问食物编号(列表中的位置),然后打印出来 食物。 (例如,清单是 A、B、C、D、E,食物编号 1 是 A)

这是我目前的代码:

mylist = ["cherry","cake", "rice", "bannana", "strawberry"]

for x in mylist:
    print(x)

mylist.append(input("Please enter a food number:"))

感谢您的帮助。

【问题讨论】:

标签: python


【解决方案1】:
mylist = ["cherry","cake", "rice", "bannana", "strawberry"]

for count, value in enumerate(mylist, start=1):
    print('{} - {}'.format(count, value))

choice = int(input("Please enter a food number: "))

print(mylist[choice-1])

结果:

1 - 樱桃

2 - 蛋糕

3 - 大米

4 - 香蕉

5 - 草莓

请输入食物编号:5

草莓

【讨论】:

    【解决方案2】:

    正如@ybressler-simon 所指出的,这些指令引用了一个 index 变量,因为列表中的项目可以通过它们在列表中的位置来访问,而一个变量可以通过位置通常称为索引。

    >>> mylist = ['hotdish', 'lutefisk']
    >>> mylist[0]
    'hotdish'
    
    >>> mylist[1]
    'lutefisk'
    
    >>> x = 0
    >>> mylist[x]
    'hotdish'
    

    使用 len() 函数获取列表中的项目数、长度。

    >>> len(mylist)
    2
    

    使用 range() 函数生成从 0 开始计数的数字序列。

    >>> list(range(2))
    [0, 1]
    

    然后将零件放在一起,一切就绪!

    【讨论】:

      【解决方案3】:

      您似乎正在尝试遍历列表的索引。使用range

      mylist = ["cherry","cake", "rice", "bannana", "strawberry"]
      
      for i in range(len(mylist)):
          print(mylist[i])
      

      同样,您可以要求用户输入并打印特定索引:

      while True:
          # Ask for input
          idx = input('Which food do you want to see?')
      
          # only allow numbers
          if not idx or not idx.isnumeric():
              print('Please enter a valid number')
              continue
      
          # convert to int
          idx = int(idx)
          
          # more validation – only accept numbers in valid range
          if idx<0 or idx>=len(mylist):
              print(f'Please enter a number between 0 and {len(mylist)-1}')
              continue
      
          # otherwise
          print(f'Your food is: {mylist[idx]}')
          break
      

      【讨论】:

      • 只是一种风格说明:range(len(mylist)) 是一种反模式。一般首选for item in mylist,或者如果你真的需要列表索引,for i, item in enumerate(mylist)
      • 同意。然而,从 Q 的上下文来看,听起来像只提供索引 @0x5453 -> 可能会以某种方式使用 python 以使其与其他语言相媲美。
      • @ybressler_simon 这解决了我的问题,但我有一个关于如何制作它的问题,所以有效数字的范围是 1 到 5,所以就像樱桃是数字 1 非常感谢您的帮助。跨度>
      • 如果您指的是输入部分,那将是一个快速的idx - 1 计算。 @LIkahuna
      • @ybressler_simon 我会在哪里添加它?它会在 idx
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2016-02-26
      • 2020-08-14
      • 2014-12-18
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多