#python
Вопрос:
Я беру урок по python, и меня просят о лабораторном задании…
Во многих документах используется определенный формат для имени человека. Напишите программу, ввод которой:
firstName middleName lastName
и чей результат:
lastName, firstInitial.middleInitial.
Пример: Если входные данные являются:
Pat Silly Doe
на выходе получается:
Doe, P.S.
Если входные данные имеют форму:
firstName lastName
на выходе получается:
lastName, firstInitial.
Пример: Если входные данные являются:
Julia Clark
на выходе получается:
Clark, J.
До сих пор я так и делал…
firstName = input()
middleName = input()
lastName = input()
lastName2 = input()
firstName2 = input()
print(lastName ',', (firstName[0]) '.' (middleName[0]) '.')
на тестовом экране написано, что он выводится как Doe, P.S. но когда я перехожу на экран отправки, он говорит, что вывода нет. Я буквально нахожусь здесь в тупике. Моя голова вот — вот взорвется. Я ничего из этого не понимаю. Они выбрасывают на меня слишком много информации за короткий промежуток времени. Любые ресурсы, которые кто-либо порекомендует, были бы великолепны.
Это сообщение об ошибке, которое я получаю
0 / 3
Traceback (most recent call last):
File "main.py", line 2, in <module>
middleName = input()
EOFError: EOF when reading a line
Input
Pat Silly Doe
Your output
Your program produced no output
Expected output
Doe, P.S.
Комментарии:
1. Возможно, они ожидают, что вы напишете функцию, которая вернет требуемый вывод. Например ?
def format_name(lastName, middleName, lastName): return lastName ',', (firstName[0]) '.' (middleName[0]) '.'
Печать записывает данные на консоль, но ничего не возвращает.2. Что есть
lastName2
иfirstName2
должно быть? Вашему коду, конечно, не дается пять входных данных, на самом деле может быть только один (который вам придется разделить на части).3. Почему ты звонишь
input
5 раз? Моя интерпретация задачи заключается в том, что «Имя, фамилия, среднее имя» должно быть указано в одном вводе.4. Я не думаю, что задание ожидает, что вы попытаетесь прочитать пять строк ввода.
5. Конечно, цель этого задания состоит в том, чтобы увидеть, понимаете ли вы концепции, которым они уже обучали, такие как
str.split()
метод.
Ответ №1:
В вопросе говорится, что все входные данные находятся в одной строке. Каждый вызов input()
считывает целую строку ввода. Таким образом, для вашего решения требуется предоставить 5 строк ввода-3 для человека с 3 именами и 2 для второго человека только с 2 именами.
Вам нужно просто позвонить input()
один раз, чтобы узнать полное имя. Используйте split()
, чтобы разбить его на список с разделителями пробелов. Затем вы можете создать соответствующий вывод в зависимости от длины списка.
names = input().split()
if len(names) == 3:
first_name, middle_name, last_name = names
print(f'{last_name}, {first_name[0]}.{middle_name[0]}.')
elif len(names) == 2:
first_name, last_name = names
print(f'{last_name}, {first_name[0]}.')
else:
print("Invalid input")
Комментарии:
1. Этот код выдает «Неверный ввод». Я пытаюсь изучить его, чтобы понять, что он делает. Правка: Я выяснил, что было не так. У меня была отдача от моего вклада.
2. Я протестировал его, и он работает. Что вы ввели в качестве входных данных?
3. Я попробовал оба ваших образца ввода, и они дали желаемый результат.
4. Вот более гибкий подход, просто чтобы показать мощь Python :
*first_names, last_name = input().split()
далееprint(f'{last_name}, {".".join(first_name[0] for first_name in first_names)}.')
. Это все.
Ответ №2:
Возможно, ваша проблема в том, что вы не написали ввод. Я запускаю его, и он работает просто отлично [![Это просто запуск вашего кода][1]][1]
Однако я вижу проблему, и она заключается в том, что вы дважды спрашиваете имя и фамилию, а на самом деле не используете их. Пожалуйста, дайте мне знать, если я вам помог [1]: https://i.stack.imgur.com/b2jiq.png
Комментарии:
1. Не публикуйте изображения, вставьте расшифровку в блок кода.
2. ДА. Когда вы запускаете то, что я написал, он возвращает то, что они просят на экране разработки. Проблема в том, что на экране отправки написано «ваша программа не произвела вывода», поэтому я не думаю, что это то, о чем они просят. 0/3 Трассировка (последний последний вызов): Файл «main.py», строка 2, в <модуле> MiddleName = input() Ошибка EOF: Ошибка EOF при чтении строки ввода Pat Глупая Лань Ваш вывод Ваша программа не выдала ожидаемого вывода Лань, P.S.
3. Аааа, хорошо, тогда вы получаете строку, затем разделяете ее с помощью метода split() и сохраняете ее в списке, затем в вашем списке есть [«Пэт», «Глупый», «Доу»], чтобы вы могли сделать то, что вы пытались в первую очередь. Что-то вроде: полное имя=ввод() имя=список(полное имя.разделение()) печать (…)