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

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

  • Введите строку слова (слово)
  • найти длину строки слова
  • используйте range () для перебора каждой буквы в слове (можно использовать для циклов диапазона)
  • Сохраняйте четные и нечетные буквы слова в виде списков
    • 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) (и то же самое для нечетных). Как было сказано, добавление может быть выполнено только с двумя списками.

zondo 31.05.2018 13:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 391
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

even_letters = even_letters + i

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

even_letters = even_letters + [i]

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

even_letters.append(i)

Немногое: Вы не можете «добавить» целое число напрямую в список с помощью '+'. Лучше всего использовать append (). Типы str и str можно объединить с помощью '+', чтобы вы могли изменить odd_letters и even_letters на 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)

Большое спасибо. Это многое прояснило для меня. Хороший день!

user9126689 02.06.2018 16:50

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

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.

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

Спасибо, я многому научился, просматривая коды людей. Это было действительно полезно!

user9126689 02.06.2018 16:52
Ответ принят как подходящий

Я написал это ... Сообщите мне, что вы думаете ...

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)
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)

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

Другие вопросы по теме