Списки и диапазоны Python - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь попрактиковаться в своем питоне, чтобы я мог улучшиться.Я немного застрял и не уверен, как поступить.Я получаю сообщение об ошибке: «1001 *» может только объединять список (не «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)
    

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Несколько вещей: вы не можете "добавить" целое число непосредственно в список, используя '+'.Использование 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)
0 голосов
/ 31 мая 2018

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

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)

Переменная «слово» принимает слово от пользователя.Список «store_1» использует понимание списка, чтобы отделить буквы в слове и сохранить его.Далее я перечисляю через «store_1» и использую переменную «store_2», чтобы хранить только индексы «store_1».

Далее я объявляю другую переменную 'even_numbers', которая использует понимание списка, чтобы перебрать 'store_2' и найти четные числа.Следующая переменная 'odd_numbers' также использует понимание списка, чтобы найти нечетные числа в 'store_2'.

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

0 голосов
/ 31 мая 2018

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

even_letters = even_letters + i

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

even_letters = even_letters + [i]

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

even_letters.append(i)
...