[+] Python wczytywanie danych z klawiatury
[+] Python wczytywanie danych z klawiatury
Ostatnio zainteresowałem się programowaniem w Pythonie. Posiadam książkę "Python od podstaw" (Helionu), od niej zacząłem więc naukę. Zauważyłem jednak, że bardzo dokładnie opisana jest w niej funkcja print i ogólnie wszelkie wypisywanie na ekranie, ale niczym nie wspomniano o wczytywaniu. Zainteresował mnie ten problem, poszukiwałem więc czegoś na kształt "scanf" z C lub "cin" z C++, tyle że do Pythona, niestety moje poszukiwania zakończyły się (w dużej mierze) porażką. Stąd wynika moje pytanie. Czy mógłby mi ktoś opisać jakieś podstawowe sposoby pobierania danych z klawiatury w tym języku. Z góry dziękuję.
Kod: Zaznacz cały
imie = raw_input("Podaj swoje imie: ")
print imie
Z funkcją raw_input() jest pewien problem - wczytuje ona wszystko jako string. Oczywiście rozumiem, że można robić operacje jak np. a=int(raw_input()), jednak pozwólcie, że posłużę się przykładem by pokazać kolosalną niedogodność związaną z raw_input():
Program w C++:
Teraz jeżeli do takiego programu wpiszemy: 12 [Enter] 12 [Enter], to wynik wyjdzie doskonale. A teraz uwaga! Otrzymamy wynik również, gdy wpiszemy: 12 [SPACJA!] 12 [Enter].
W przypadku takiego samego programu napisanego w Pythonie druga forma wpisywania danych nie ma prawa działać, gdyż cały ciąg liczb tzn. 12 [spacja] 12 zostanie potraktowany jako string "12 12" który nie można łatwo zamienić na integer.
Teraz niektórzy powiedzą: "Co za różnica? Po prostu po każdej danej wciskaj [Enter].". Ja im na to odpowiem: "Ja mogę tak robić, jednak automatyczna sprawdzarka np. na pl.spoj.pl nie jest taka wyrozumiała."
Program w C++:
Kod: Zaznacz cały
cin >> a;
cin >> b;
cout << a + b;
W przypadku takiego samego programu napisanego w Pythonie druga forma wpisywania danych nie ma prawa działać, gdyż cały ciąg liczb tzn. 12 [spacja] 12 zostanie potraktowany jako string "12 12" który nie można łatwo zamienić na integer.
Teraz niektórzy powiedzą: "Co za różnica? Po prostu po każdej danej wciskaj [Enter].". Ja im na to odpowiem: "Ja mogę tak robić, jednak automatyczna sprawdzarka np. na pl.spoj.pl nie jest taka wyrozumiała."
Ja tam sie na pythonie nie znam, ale zawsze mozna zrobic tak:
Kod: Zaznacz cały
nums = raw_input("Podaj A i B: ").split()
print int(nums[0]) + int(nums[1])