Chciałbym odczytać dane z klawiatury w pythonie
Próbuję tego:
nb = input('Choose a number')
print ('Number%s \n' % (nb))
Ale to nie działa, ani z zaćmieniem, ani w terminalu, zawsze kończy się pytaniem. Mogę wpisać numer, ale nic się nie dzieje.
Wiesz dlaczego?
Odpowiedzi:
próbować
a jeśli chcesz mieć wartość liczbową, po prostu ją przekonwertuj:
źródło
Wygląda na to, że mieszasz tutaj różne Pythony (Python 2.x vs. Python 3.x) ... Zasadniczo jest to poprawne:
Problem w tym, że jest on obsługiwany tylko w Pythonie 3. Jak odpowiedział @sharpner, dla starszych wersji Pythona (2.x) musisz użyć funkcji
raw_input
:Jeśli chcesz przekonwertować to na liczbę, powinieneś spróbować:
... chociaż musisz wziąć pod uwagę, że może to spowodować wyjątek:
A jeśli chcesz wydrukować liczbę przy użyciu formatowania, w Pythonie 3
str.format()
jest zalecane:Zamiast:
Ale obie opcje (
str.format()
i%
) działają zarówno w Pythonie 2.7 i Pythonie 3.źródło
space
po swoim ciągu, aby użytkownik wprowadził swoje dane wejściowe, jeśli pokój.Enter Tel12340404
vsEnter Tel: 12340404
. widzieć! : PNieblokujący, wielowątkowy przykład:
Ponieważ blokowanie danych wejściowych z klawiatury (od
input()
bloków funkcyjnych) często nie jest tym, co chcemy robić (często chcielibyśmy robić inne rzeczy), oto bardzo uproszczony wielowątkowy przykład pokazujący, jak nadal uruchamiać głównej aplikacji, podczas gdy nadal czyta dane wejściowe klawiatury, gdy tylko się pojawią .Działa to poprzez utworzenie jednego wątku do działania w tle, ciągłe wywoływanie,
input()
a następnie przekazywanie wszelkich otrzymanych danych do kolejki.W ten sposób twój główny wątek może robić wszystko, co zechce, otrzymując dane wejściowe klawiatury z pierwszego wątku, gdy jest coś w kolejce.
1. Przykład kodu Bare Python 3 (bez komentarzy):
2. Ten sam kod Python 3 jak powyżej, ale z obszernymi komentarzami wyjaśniającymi:
Przykładowe dane wyjściowe:
Bibliografia:
Powiązane / powiązane:
źródło
input([prompt])
jest równoważneeval(raw_input(prompt))
i dostępne od wersji Pythona 2.6Ponieważ jest to niebezpieczne (ze względu na eval), dla aplikacji krytycznych należy preferować raw_input.
źródło
raw_input
został przemianowany nainput
i NIE eval.To powinno działać
źródło
input()
?