Keď píšeme program, ktorý má vyriešiť nejakú úlohu, často nevieme dopredu, aké konkrétne vstupy dostane. Preto sa testovanie programov robí tak, že náš program nedostáva vstupy od človeka (teda, že ich nezadávame ručne), ale sú mu automaticky podané zo súboru. Tento súbor sa takzvane "nasmeruje" na štandardný vstup, čo znamená, že náš program číta zo vstupu presne tak, ako keby človek niečo písal na klávesnici. V zadaní úloh ti vždy ukážeme príklad toho, ako vstup pre úlohu vyzerá. Tvoj program však testujeme aj pre mnohé ďalšie vstupy.
Na načítanie týchto vstupov používame už známu funkciu input()
. Tá vždy načíta jeden riadok vstupu vo forme reťazca (string).
Ak v riadku očakávame čísla, musíme ich konvertovať na čísla pomocou funkcie int()
.
a = int(input()) # načíta jedno číslo
print(a + 1) # vypíše číslo zväčšené o 1
Keď teda odovzdáte riešnie celý náš program sa testuje automaticky. Ako to funguje ? 1. Vstupný súbor sa pripojí na štandardný vstup. Znamená to, že ak by vo vstupnom súbore boli napríklad tieto tri riadky:
3
5 7 9
10
náš program si ich bude môcť postupne načítať cez input()
:
n = int(input()) # načíta 3
zoznam = list(map(int, input().split())) # načíta 5, 7, 9 ako zoznam čísel
x = int(input()) # načíta 10
Program beží od začiatku pre každý testovací vstup.
V praxi to znamená, že testovacích vstupov môže byť viacero (napr. 10 rôznych súborov), a pre každý z nich sa tvoj program
spustí úplne od začiatku. Vždy dostane iné údaje na vstupe, ale program sa o tom nijak nemusí starať — len číta vstupy pomocou input()
.
Výstup tvojho programu sa zbiera zo štandardného výstupu.
Čokoľvek, čo vypíšeš pomocou print()
, sa uloží do tzv. výstupného súboru.
Testovač potom porovná výstup tvojho programu s očakávaným správnym výstupom. Ak sa presne zhodujú, test je úspešný.
Teda pre úlohu, v ktorej máme načítať číslo a vypísať jeho dvojnásobok to bude vyzerať nejak takto:
n = int(input())
print(n * 2)
Ak vstup bol:
4
Očakávaný výstup bude:
8
A teda, ak tvoj program vypíše práve 8, test prešiel.