Néhány hozzáfűzés:
• A név listákat a
https://en.wikipedia.org/wiki/List_of_most_popular_given_names oldalról vettem. Feltételezem, hogy nem a teljes utónévjegyzék használata a cél.
• Mivel elsődlegesen angol megszólítást kér a feladat, nyugati névsorrendet használtam, azaz keresztnév, majd családnév. Mivel a feladat nem kérte, a névsorrendet nem befolyásolja a paraméterként kapott nyelv.
ferfi_nev_lista = (
'Noah', 'George', 'Oliver', 'Muhammad', 'Arthur', 'Leo', 'Harry', 'Oscar', 'Henry', 'Theodore', # angol
'Dominik', 'Olivér', 'Levente', 'Máté', 'Marcell', 'Noel', 'Bence', 'Zalán', 'Milán', 'Ádám', # magyar
)
no_nev_lista = (
'Olivia', 'Amelia', 'Isla', 'Ava', 'Ivy', 'Florence', 'Lily', 'Freya', 'Mia', 'Willow', # angol
'Hanna', 'Léna', 'Zoé', 'Anna', 'Luca', 'Emma', 'Olívia', 'Boglárka', 'Lili', 'Mira', # magyar
)
nyelv_terkep = {
'en': ('Hi %s', 'Dear Mr. %s', 'Dear Ms. %s'),
'hu': ('Szervusz %s', 'Tisztelt %s úr', 'Kedves %s néni'),
}
# a.
def megszolit_a(nev, kor):
if kor <= 17:
return f'Hi {nev}'
else:
if nev in ferfi_nev_lista:
return f'Dear Mr. {nev}'
elif nev in no_nev_lista:
return f'Dear Ms. {nev}'
print(megszolit_a('Kate', 10))
print(megszolit_a('Kate', 20))
print(megszolit_a('Harry', 20))
# b.
def megszolit_b(nev, kor):
if kor <= 0:
return 'Hiba: túl fiatal, hogy megszólítsam, majd ha már megszületett'
elif kor <= 17:
return f'Hi {nev}'
else:
if nev in ferfi_nev_lista:
return f'Dear Mr. {nev}'
elif nev in no_nev_lista:
return f'Dear Ms. {nev}'
else:
return 'Hiba: túl idős, hogy tegezzem, de nem bírom beazonosítani a nemét'
print(megszolit_b('Kate', -10))
print(megszolit_b('Kate', 10))
print(megszolit_b('Kate', 20))
print(megszolit_b('Harry', 20))
# c.
def megszolit_c(nev, kor):
if kor <= 0:
return 'Hiba: túl fiatal, hogy megszólítsam, majd ha már megszületett'
nev_resz = nev.split()
if len(nev_resz) < 2:
return 'Hiba: túl kevés neve van, nem tudom, hogy családnév vagy keresztnév'
elif len(nev_resz) > 2:
return 'Hiba: túl sok neve van, nem tudom hol a határ családnév és keresztnév között'
if kor <= 17:
return f'Hi {nev_resz[0]}'
else:
if nev_resz[0] in ferfi_nev_lista:
return f'Dear Mr. {nev_resz[1]}'
elif nev_resz[0] in no_nev_lista:
return f'Dear Ms. {nev_resz[1]}'
else:
return 'Hiba: túl idős, hogy tegezzem, de nem bírom beazonosítani a nemét'
print(megszolit_c('Kate', 10))
print(megszolit_c('Kate the Great', 10))
print(megszolit_c('Kate Great', 10))
print(megszolit_c('Kate Great', 20))
print(megszolit_c('Harry Potter', 20))
# d.
def megszolit_d(nev, kor, nyelv):
if nyelv not in nyelv_terkep:
return 'Hiba: ezen a nyelven egy megszólítást sem bírok kinyögni'
if kor <= 0:
return 'Hiba: túl fiatal, hogy megszólítsam, majd ha már megszületett'
nev_resz = nev.split()
if len(nev_resz) < 2:
return 'Hiba: túl kevés neve van, nem tudom, hogy családnév vagy keresztnév'
elif len(nev_resz) > 2:
return 'Hiba: túl sok neve van, nem tudom hol a határ családnév és keresztnév között'
if kor <= 17:
return nyelv_terkep[nyelv][0] % nev_resz[0]
else:
if nev_resz[0] in ferfi_nev_lista:
return nyelv_terkep[nyelv][1] % nev_resz[1]
elif nev_resz[0] in no_nev_lista:
return nyelv_terkep[nyelv][2] % nev_resz[1]
else:
return 'Hiba: túl idős, hogy tegezzem, de nem bírom beazonosítani a nemét'
print(megszolit_d('Harry Potter', 10, 'de'))
print(megszolit_d('Harry Potter', 10, 'en'))
print(megszolit_d('Harry Potter', 10, 'hu'))
print(megszolit_d('Harry Potter', 20, 'en'))
print(megszolit_d('Harry Potter', 20, 'hu'))
print(megszolit_d('Lily Evans', 10, 'en'))
print(megszolit_d('Lily Evans', 10, 'hu'))
print(megszolit_d('Lily Evans', 20, 'en'))
print(megszolit_d('Lily Evans', 20, 'hu'))