【问题标题】:Python lists and rangesPython 列表和范围
【发布时间】:2018-05-31 11:34:13
【问题描述】:

我正在尝试练习我的 Python,以便改进。我有点卡住了,不知道如何继续。我收到一条错误消息,提示 “只能将列表(而不是 'int')连接到列表中。” 我将在下面留下我的代码和我想要做的事情。

  • 输入一个单词串(word)
  • 查找单词的字符串长度
  • 使用 range() 遍历 word 中的每个字母(可用于范围循环)
  • 将单词中的奇数和偶数字母保存为列表
    • odd_letters:从索引 0,2 开始,...
    • even_letters:从索引 1,3 开始,...
  • 打印奇偶列表

    word = input("Type: ")
    
    word = list(word)
    print(word)
    
    odd_letters = []
    even_letters = []
    
    length = int(len(word))
    
    for i in range(length):
        if i/2 == 0:
            even_letters = even_letters + i
    
        elif i/2 != 0:
            odd_letters = odd_letters + i
    
    print(even_letters)
    print(odd_letters)
    

【问题讨论】:

  • 使用even_letters.append(i)(奇数也一样)。正如它所说,添加只能通过两个列表来完成。

标签: python-3.x list range z-index


【解决方案1】:

这是我写的……让我知道你的想法……

word = input("Choose a word to test: ")
word_len = len(word)
print(word," contains ",word_len," letters")
odd_letters = []
even_letters = []
for i in range(1,len(word),2):
    even_letters.append(word[i])
for i in range(0,word_len,2):
    odd_letters.append(word[i])

print("Odd letters are: ",odd_letters)
print("Even letters are: ",even_letters)

【讨论】:

    【解决方案2】:

    您的代码很好,但我决定为您想要的程序找到一个更快的解决方案。这是我的代码:

    word = str(input("Enter word:"))
    store_1 = [x for x in word]
    store_2 = []
    for idx, val in enumerate(store_1):
        store_2.append(idx)
    even_numbers = [y for y in store_2 if y%2 == 0]
    odd_numbers = [z for z in store_2 if z%2 == 1]
    print("List of Even numbers:",even_numbers)
    print("List of Odd numbers:",odd_numbers)
    

    变量 'word' 接收来自用户的单词。列表“store_1”使用列表推导来分隔单词中的字母并存储它。接下来,我枚举“store_1”并使用变量“store_2”仅存储“store_1”的索引。

    接下来,我声明了另一个变量“even_numbers”,它使用列表解析来遍历“store_2”并找到偶数。下一个变量“odd_numbers”也使用列表推导来查找“store_2”中的奇数。

    然后,它只是将偶数和奇数列表打印给用户。希望这会有所帮助:)

    【讨论】:

    • 谢谢,我从查看人员代码中学到了很多东西。真的很有帮助!
    【解决方案3】:

    您无法将整数添加到列表中,就像您在此处尝试的那样:

    even_letters = even_letters + i
    

    您可以改为这样做(现在将列表添加到列表中,这是有效的):

    even_letters = even_letters + [i]
    

    或者,使用append 就地更改列表,将新元素添加到末尾:

    even_letters.append(i)
    

    【讨论】:

      【解决方案4】:

      几件事: 您不能使用“+”将整数直接“添加”到列表中。最好使用 append()。 str 和 str 类型可以使用 '+' 连接,因此您可以将odd_letters 和 even_letters 更改为 str,如下所示。

      此外,通过将“i”添加到偶数和奇数,您正在添加迭代变量值。 由于您希望附加字母,因此您需要参考列表索引,即 word[i]

      输入的第一个字母会在一个奇怪的位置:)

      word = input("Type: ")
      
      word = list(word)
      print(word)
      
      odd_letters = ''
      even_letters = ''
      
      length = int(len(word))
      
      for i in range(1,length+1):
          if i%2 == 0:
              even_letters = even_letters + word[i-1]
          else:
              odd_letters = odd_letters + word[i-1]
      
      print("even_letters",even_letters)
      print("odd_letters",odd_letters)
      

      【讨论】:

      • 非常感谢。这让我明白了很多。美好的一天!
      【解决方案5】:
      word=input()
      word_num=len(word)
      print(word_num)
      
      odd_num=[]
      even_num=[]
      
      for letters in range(0,word_num,2):
        odd_num.append(word[letters])
      
      for letters in range(1,word_num,2):
        even_num.append(word[letters])
      
      print(odd_num)
      print(even_num)
      

      这是适用于每个单词的答案,并且符合所有要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 2015-03-03
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多