Strona 1 z 1
[+] Python wczytywanie danych z klawiatury
: 19 kwietnia 2008, 14:09
autor: Czocher
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ę.
: 19 kwietnia 2008, 17:07
autor: Theq
Kod: Zaznacz cały
imie = raw_input("Podaj swoje imie: ")
print imie
: 19 kwietnia 2008, 19:36
autor: Czocher
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."
: 19 kwietnia 2008, 20:44
autor: Theq
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])
: 19 kwietnia 2008, 22:00
autor: Czocher
Hehe, Python mnie zaskakuje :-P. Dziękuję za odpowiedź.