«Бонд, Джеймс Бонд» - программа для возвращения имени
Идея этой программы в том, что вы пишете свое имя,
и программа возвращает ваше имя таким же образом, чтобы Джеймс Бонд представлял себя
Поэтому, если вы напишите свое имя, оно должно быть возвращено как:
"Меня зовут Бонд, Джеймс Бонд"
Если вы напишите "Джеймс Бонд" как ваше имя.
Однако, если вас зовут, f.ex. «Грейс Мюррей Хоппер», затем возвращается:
«Имя Хоппер, Грейс Мюррей Хоппер»
Если ваше имя оканчивается на «младшие, старшие или римские цифры (я только добавил до III)», как Генри Хакслибери III, оно возвращает:
«Зовут Хакслберри, Генри Хукслиберри III»
И если имя включает «Von, Van, De или Di (я больше не добавил)», как Ян Фон Нейман, оно возвращает:
«Зовут фон Нейман, Ян фон Нейман»
Если он включает в себя обе упомянутые ранее части, например, «Ян фон Нейман II», он возвращает:
"Зовут фон Нейман, Ян фон Нейман II
Все это работает, но код длинный, и если я хочу, чтобы он работал для более длинных имен, мне нужно добавить его вручную.
Так что я считаю, что есть способ, которым я могу написать код короче, где я не зависим от определенных переменных для каждого компонента в имени, только список, включающий «Jr, Sr и Roman Numbers» и «Van, Von, De and Di ++ ", и я надеюсь, что программа будет работать для" бесконечно "длинных имен
Но я не понимаю ни функцию цикла, ни функцию «если есть (c в списке для c по имени)»
Буду благодарен за любую помощь!
Спасибо.
TL; DR Мне нужна помощь в понимании того, как я создаю программу, которая делает то же, что и следующая программа, но не зависит от фиксированных переменных a, b, c, d ++,
Любая помощь будет оценена!
Я новичок в программировании, я только делаю это в течение двух дней
name = str(input("Write your name: "))
lst = name.split(" ")
stringcount = len(lst)
check_a = list("jr" or "sr" or "Jr" or "Sr" or "I" or "II" or "III")
check_b = list("Van" or "Von" or "van" or "von" or "De" or "Di" or "de" or "di")
def namecheck(name):
if int(stringcount) == 0:
print("Im going to need your name, Sir.")
elif int(stringcount) == 1:
print("The name is " + str(name) + ", " + str(name) + ".")
elif int(stringcount) == 2:
a, b = name.split()
if b == "jr" or b == "sr" or b == "Jr" or b == "Sr" or b == "I" or b == "II" or b == "III":
print("The name is " + str(a) + ", " + str(name) + ".")
elif a == "Van" or a == "Von" or a == "van" or a == "von" or a == "De" or a == "Di" or a == "de" or a == "di":
print("The name is " + str(b) + ", " + str(name) + ".")
else:
print("The name is " + str(b) + ", " + str(name) + ".")
elif int(stringcount) == 3:
a, b, c = name.split()
if c == "jr" or c == "sr" or c == "Jr" or c == "Sr" or c == "I" or c == "II" or c == "III":
print("The name is " + str(b) + ", " + str(name) + ".")
elif b == "Van" or b == "Von" or b == "van" or b == "von" or b == "De" or b == "Di" or b == "de" or b == "di":
print("The name is " + str(b) + " " + str(c) + ", " + str(name) + ".")
else:
print("The name is " + str(c) + ", " + str(name) + ".")
elif int(stringcount) == 4:
a, b, c, d = name.split()
if d == "jr" or d == "sr" or d == "Jr" or d == "Sr" or d == "I" or d == "II" or d == "III":
if b == "Van" or b == "Von" or b == "van" or b == "von" or b == "De" or b == "Di" or b == "de" or b == "di":
print("The name is " + str(b) + " " + str(c) + ", " + str(name) + ".")
else:
print("The name is " + str(c) + ", " + str(name) + ".")
elif b == "Van" or b == "Von" or b == "van" or b == "von" or b == "De" or b == "Di" or b == "de" or b == "di":
print("The name is " + str(b) + " " + str(c) + " " + str(d) + ", " + str(name) + ".")
elif c == "Van" or c == "Von" or c == "van" or c == "von" or c == "De" or c == "Di" or c == "de" or c == "di":
print("The name is " + str(c) + " " + str(d) + ", " + str(name) + ".")
else:
print("The name is " + str(d) + ", " + str(name) + ".")
else:
g_name = name.split(" ", stringcount)[stringcount-1]
print("The name is " + str(g_name) + ", " + str(name) + ".")
namecheck(name)
Я использую "Python IDLE 3.7"