我试图将列表中的元素传输到另一个列表.我询问将有多少个数字传输到列表B,但错误显示



im试图从列表a转移元素到列表b,然后询问我想传输多少个数字。它显示了此错误:

'< =''nontype'和'int'

之间不支持

ps。我的工作尚未完成

a = [2,4,6,8,10,12]
b = []
transfer = int(input("how many numbers would you like to transfer:?"))
for i in a:
    if transfer == 1: 
        b.append(i) <= 2
print(b)

im期望该数字2将在B列表中转移

b.append(i)返回 None。因此,比较b.append(i) <= 2引起了错误。如果您想将代码基于列表的长度,则可以使用len(b)。类似:

for i in a:
    if len(b) < transfer:
        b.append(i)
    else:
        break

另外您可以这样做:

b = a[:transfer]

这只会将旧列表的slice a用作新列表b

  1. 首先,当将输入转换为int时,应防止错误。有两种方法可以做到这一点。

    1. 尝试..除语句。

      transfer = -1
      while transfer < 0:
          try:
              inp = input("how many numbers would you like to transfer:?")
              transfer = int(inp)
          except:
              print("Invalid input.")
      
    2. isdecimal()

      transfer = -1
      while transfer < 0:
          inp = input("how many numbers would you like to transfer:?")
          if inp.isdecimal():
              transfer = int(inp)
          else:
              print("Invalid input.")
      
  2. 现在关于主要任务。有3种方法如何解决。

    1. 用于使用enumerate()的循环。

      for i, el in enumerate(a):
          if i < transfer:
              b.append(el)
          else:
              break
      
    2. 列表理解:

      b = [el for i, el in enumerate(a) if i < transfer]       
      
    3. 列表切片:

      b = a[:transfer]
      

最新更新