Všetky príklady v tejto lekcii počítali s tým, že čísla dostaneme rozdelené do riadkov.
Čo ak by sme n
čísel dostali na jedinom riadku? Funkcia input
by ich
všetky načítala do jedného reťazca a funkcia int
by zlyhala, pretože
vie skonvertovať iba jedno číslo z reťazca, nie viacero.
# Program dostane cislo n, pocet cisel, ktore budu nasledovat
# na dalsom riadku oddelene medzerou.
n = int(input())
cisla = input()
int(input())
# Chyba!
# Naprilkad pre vstup:
# 3
# 3 4 5
# Dostaneme chybu:
# ValueError: invalid literal for int() with base 10: '3 4 5'
# To znamena, ze funkcia int() nevie skonvertovat '3 4 5' na jedine cislo.
Pomôžeme si preto metódou split
, ktorá rozseká čísla v reťazci podľa
medzier a vráti pole obsahujúce jednotlivé čísla (ako reťazce!).
# Program dostane cislo n, pocet cisel, ktore budu nasledovat
# na dalsom riadku, oddelene medzerou.
n = int(input())
# premenna cisla bude obsahovat cely riadok vstupu ako string,
# napriklad '3 4 5'
cisla = input()
# rozsekaneStr bude obsahovat jednotlive cisla v poli ako stringy,
# pretoze metoda split rozdeli obsah premennej cisla podla medzier.
# Napriklad: ['3', '4', '5']
rozsekaneStr = cisla.split()
# Z jednotlivych stringov v poli rozsekaneStr potrebujeme dostat inty.
# Napriklad: [3, 4, 5]
rozsekaneInt = []
for x in rozsekaneStr:
rozsekaneInt.append(int(x))
print(rozsekaneInt)
# Vstup:
# 3
# 3 4 5
# Vystup:
# rozsekaneStr: ['3', '4', '5']
# rozsekaneInt: [3, 4, 5]
Ukážeme si ešte jeden príklad použitia listu, tentokrát bude obsahovať reťazce. Program má za úlohu vypísať kód mesiaca zo vstupu.
# Program dostane cislo mesiaca (indexovaneho od 0) a vypise jeho skratku.
mesiace = ["jan", "feb", "mar", "apr", "maj", "jun",
"jul", "aug", "sep", "okt", "nov", "dec"]
n = int(input())
print(mesiace[n])