#python #python-3.x
#python #python-3.x
Вопрос:
Этот код pig latin, который я создал, кажется, в порядке, но он запрашивает ввод, а затем выводит сам ввод. Что здесь не так?
def pig_latin(string_x):
word_list=string_x.split()
for item in word_list:
if (item[:1]).lower() in ["a",'e','i','o','u']:
item ='ay'
else:
item=item[1:] item[:1] 'ay'
print(" ".join(word_list))
x=input()
pig_latin(x)
Комментарии:
1. Вы должны использовать
x=input("Input something : ")
2. В противном случае ваш код будет делать это:
pig_latin("Input something : ")
.3. О, мне очень жаль, но это опечатка с моей стороны. Я использовал x = input (), и он все еще не функционирует
4. @T.Feix хотя вы правы в этом, есть проблемы посерьезнее. Я полагаю, что
str(...)
бит был добавлен постфактум5. @user9605362 кстати, вам нужно будет отмечать пользователя, когда он комментирует, иначе он не получит уведомления
Ответ №1:
Когда вы присваиваете значение item
, вы изменяете переменную item
, но не значение этого элемента в списке. Вы хотите что-то вроде:
def pig_latin(string_x):
word_list=string_x.split()
new_word_list = []
for item in word_list:
if (item[:1]).lower() in ["a",'e','i','o','u']:
new_word_list.append(item 'ay')
else:
new_word_list.append(item[1:] item[:1] 'ay')
print(" ".join(new_word_list))
x=input()
pig_latin(x)
Ответ №2:
def pig_latin(string_x):
word_list = string_x.split()
translated = []
for item in word_list:
if (item[:1]).lower() in ["a", 'e', 'i', 'o', 'u']:
item = 'ay'
else:
item = item[1:] item[:1] 'ay'
translated.append(item)
print(" ".join(translated))
x = input("Input something : ")
pig_latin(x)
Возникло несколько проблем:
- Если вы хотите принимать пользовательский ввод, вам нужно использовать
input
вместоstr
- Вам нужно иметь возможность сохранять созданные вами элементы на случай, если пользователь вводит несколько слов, поэтому я создал
translated
список. - Вы печатали список слов в своих выходных данных, который был просто разделенной версией входных данных.