Programování v Pythonu, úloha
Dobrý večer, dostal jsem za úkol v pythonu vytvořit program, ale vůbec nevím jak na to...
Prosím o pomoc.
Vytvořte program s funkcí, který ze zadaného jména a příjmení vypíše na první řádek jméno a na druhý příjmení. POZOR! Jméno může mít více slov. Jako příjmení berte poslední slovo.
Prosím o pomoc.
Vytvořte program s funkcí, který ze zadaného jména a příjmení vypíše na první řádek jméno a na druhý příjmení. POZOR! Jméno může mít více slov. Jako příjmení berte poslední slovo.
Odpovědi
Diskuze
https://www.onlinegdb.com/online_python_compiler
celeJmeno = "Josef Vaclav Sladek"
poleSlov = celeJmeno.split(" ")
print("Jmena:", ", ".join(poleSlov[0:-1]))
print("Prijmeni:", poleSlov[-1])
Vytiskne to:
Jmena: Josef, Vaclav
Prijmeni: Sladek
Funkce split(" ") vytvori z retezce pole, jehoz prvky jsou podretezce, ktere jsou v puvodnim retezci oddeleny mezerou, takze promena poleSlov obsahuje pole ['Josef', 'Vaclav', 'Sladek'].
A pak vybereme vsechny prvky toho pole, krome posledniho - poleSlov[0:-1], cili od prvku 0 (0 znaci prvni prvek pole) do prvku s indexem -1 (to znamena pred poslednim prvkem), funkci ", ".join() zase slozime prvky tohoto zmenseneho pole do retezce, oddelene jsou carkou, za kterou je mezera.
Prijmeni je posleni polozka pole, proto pouzijeme index -1.
To je cele.
zadání je poměrně snadné, nicméně nikde neuvádíte, z jakého datového proudu budeme vstup číst. Půjde o standardní vstup, tedy konzole bude čekat, co napíšeme na klávesnici, budeme číst data ze souboru nebo bude jméno zadané jako konstanta přímo ve zdrojovém kódu?
Budu předpokládat, že půjde o vstup zadaný z klávesnice.
Rovněž nikde neuvádíte, jakým symbolem budou jednotlivé části jména odděleny. Předpokládám, že půjde o mezeru.
UPOZORNĚNÍ: Ontola mi maže zanoření, ale určitě víte, kde ho zapsat.
Kód by vypadal následovně:
#!/usr/bin/python3
import re # pridavame knihovnu pro regularni vyrazy
def parse_name(name): # funkce pro rozklad jmena
name = re.sub('\ +$', '', name) # odstraneni pocatecnich mezer, pokud existuji
name = re.sub('^\ +', '', name) # odstraneni mezer na konci, pokud existuji
if not name : # osetreni, zda byl vubec nejaky vstup vlozen
print("Invalid input")
return
name = re.sub('\ +', ' ', name) # nahrazeni vicenasobnych mezer za jednu
name = name.split(' ') # rozlozeni vstupu na slova oddelena mezerou do seznamu
print(" ".join(name[0:-1])) # tisk jmena
print(name[-1]) # tisk posledniho slova
parse_name(input()) # volani funkce
############
Uveďte, zda je vše pochopitelné a určitě se kdykoliv ozvěte, pokud budete mít problém s programováním.
Jinak na odstraneni pocatecnich a konecnejch mezer se da pouzit funkce strip():
' nazar kamo '.strip() = 'nazar kamo'
ano, původně jsem si nevšiml, že už je tu odpověď vložená, vaše řešení je elegantnější. Funkce strip mě úplně minula, s ní by to bylo určitě jednodušší. Děkuji moc za tento tip a přeji pěkný zbytek večera.
Tak parada, pro tazatele budou nase reseni mozna nepouzitelny, ale my jsme se navzajem obohatili :-).