Печать списка в обратном порядке в Python - PullRequest
0 голосов
/ 12 апреля 2020

Здравствуйте (это мой первый вопрос на сайте, поэтому извиняюсь, если я не следовал правилам) Ниже приведены два кода (используются для l oop), которые я написал для печати обратной строки, введенной пользователем. Один код выдает мне ошибку, а другой работает нормально. Я не могу понять почему. Почему функция «диапазон», кажется, имеет значение? Спасибо, если кто-то может помочь мне понять логи c - большое спасибо

Код 1: Это дает мне ошибку:

string = input('Enter a Word ')
length = len(string)
reverse = []

for i in string:
    x=string [-1-i]
    reverse.append(x)

print (reverse)

* Введите слово Python


TypeError Traceback (последний последний вызов) в 4 5 для i в строке: ----> 6 x = строка [-1-i] 7 reverse.append (x) 8 TypeError : неподдерживаемые типы операндов для -: 'int' и 'str'

Код 2: Это прекрасно работает

string = input('Enter a Word ')
length = len (string)
reverse = []

for i in range(length):
    x=string [-1-i]
    reverse.append(x)

print (reverse)

* Введите слово Python

['n', 'o', 'h', 't', 'y', 'P'] *

Ответы [ 3 ]

1 голос
/ 12 апреля 2020

Первый l oop, который вы делаете, - это создание foreach l oop для вашей строки, поэтому ваше "i" - это в основном символ. Знаете ли вы, что есть также функция с именем "reverse ()"?

0 голосов
/ 12 апреля 2020

Вы можете легко сделать функцию reverse -

def reverse(word = ""):
  return word if len(word) < 2 else reverse(word[1::]) + word[0]

myword = "bookkeepper"

print(myword+reverse(myword))
# bookkeepperreppeekkoob
0 голосов
/ 12 апреля 2020

С for i in string, i будет принимать значение каждого символа в строке, например, 'H', 'e', 'l', 'l', 'o', если вход был «Hello».

Когда вы звоните string[-1-i], Python пытается вычесть строку из числа, поэтому вы получаете ошибку unsupported operand type(s) for -: 'int' and 'str'.

...