Списки и диапазоны Python

Я пытаюсь практиковать свой питон, чтобы улучшить его. Я как бы застрял и не знаю, как продолжить. Я получаю сообщение об ошибке "можно только объединить список (не 'int') в список". Я оставлю свой код и то, что я пытаюсь сделать, ниже.

  • Введите строку слов (слово)
  • найти длину строки слова
  • используйте range() для перебора каждой буквы в слове (можно использовать для циклов диапазона)
  • Save odd and even letters from the word as lists
    • odd_letters: starting at index 0,2,...
    • четные_буквы: начиная с индекса 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)
    

person Community    schedule 31.05.2018    source источник
comment
Используйте even_letters.append(i) (и то же самое для нечетных). Как было сказано, добавление может быть выполнено только с двумя списками.   -  person zondo    schedule 31.05.2018


Ответы (5)


Я написал это... Дайте мне знать, что вы думаете...

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)
person Alkis Vounakis    schedule 26.04.2020

Ваш код хорош, но я решил найти более быстрое решение для нужной вам программы. Это мой код:

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'.

Затем он просто выводит пользователю четные и нечетные списки. Надеюсь это поможет :)

person Mahir Islam    schedule 31.05.2018
comment
Спасибо, я многому учусь, просматривая коды людей. Это было действительно полезно! - person ; 02.06.2018

Вы не можете добавить целое число в список, как вы пытались сделать здесь:

even_letters = even_letters + i

Вместо этого вы можете сделать это (что теперь добавляет список в список, который действителен):

even_letters = even_letters + [i]

Или используйте append, чтобы изменить список на месте, добавив новый элемент в конец:

even_letters.append(i)
person thesilkworm    schedule 31.05.2018

Несколько вещей: вы не можете «добавить» целое число непосредственно в список, используя «+». Использование append() было бы лучше. Типы str и str могут быть объединены с помощью '+', поэтому вы можете изменить нечетные_буквы и четные_буквы на str, как показано ниже.

кроме того, добавляя «i» к четным и нечетным, вы добавляете значение переменной итерации. Поскольку вы хотите, чтобы буква была добавлена, вам нужно сослаться на индекс списка, т.е. слово [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)
person Athena    schedule 31.05.2018
comment
Большое спасибо. Это многое для меня прояснило. Хороший день! - person ; 02.06.2018

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)

Это ответ, который работает с каждым словом и соответствует всем требованиям.

person user13609283    schedule 24.05.2020