import sys
print(sys.platform)
print(2**100)
raw_input()
Korzystam z języka Python 3.1 i nie mogę uzyskać raw_input
„zamrożenia” wyskakującego okna dos. Książka, którą czytam, dotyczy Python 2.5 i używam Python 3.1
Co powinienem zrobić, aby to naprawić?
python
python-3.x
Cena Lonnie
źródło
źródło
Odpowiedzi:
Począwszy od Python 3,
raw_input()
zmieniono jego nazwę nainput()
.Od Co nowego W Python 3.0, sekcja Wbudowane druga pozycja.
źródło
input()
iraw_input()
.a = input()
weźmie dane wejściowe użytkownika i umieści je we właściwym typie. Np .: jeśli użytkownik wpisze 5, wówczas wartość wa
jest liczbą całkowitą 5.a = raw_input()
pobierze dane wejściowe użytkownika i umieści je jako ciąg znaków. Np .: jeśli użytkownik wpisze 5, wówczas wartością wa
jest ciąg „5”, a nie liczba całkowita. Pomyślałem, że może to być dobra informacja dla początkujących w Pythonie, takich jak ja.Działa to w Pythonie 3.xi 2.x:
źródło
global input
u góry funkcji wywoływania.import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.__builtin__
zmieniono nazwę nabuiltins
Python 3. Oba są dostępne jak__builtins__
w CPython.getattr(__builtins__, 'raw_input', input)
zwraca wartość domyślną po zaimportowaniu do Python 2.7.2.Niezawodny sposób na rozwiązanie tego problemu
six to moduł, który załatuje wiele z 2/3 wspólnych punktów bazowych kodu.
źródło
from six.moves import input as raw_input
, możesz zachowaćraw_input
skrypt i uruchomić go używając obu wersji Pythona.Jak wskazali inni,
raw_input
zmieniono nazwę funkcji nainput
Python 3.0, a naprawdę lepiej byłoby skorzystać z bardziej aktualnej książki, ale chcę podkreślić, że istnieją lepsze sposoby na sprawdzenie wyniku działania skryptu .Z twojego opisu, myślę, że używasz systemu Windows, zapisałeś
.py
plik, a następnie kliknij go dwukrotnie, aby go uruchomić. Wyskakujące okno terminala zamyka się natychmiast po zakończeniu programu, więc nie można zobaczyć, jaki był wynik programu. Aby rozwiązać ten problem, książka zaleca dodanieraw_input
/input
instrukcji , aby poczekać, aż użytkownik naciśnie klawisz Enter. Jednak, jak widzieliście, jeśli coś pójdzie nie tak, jak na przykład błąd w twoim programie, to instrukcja nie zostanie wykonana, a okno zamknie się, nie będziesz w stanie zobaczyć, co poszło źle. Łatwiejsze może być użycie wiersza polecenia lub IDLE.Użyj wiersza polecenia
Kiedy patrzysz na okno folderu zawierające program w Pythonie, przytrzymaj klawisz Shift i kliknij prawym przyciskiem myszy w dowolnym miejscu w białym obszarze okna. Wyskakujące menu powinno zawierać wpis „Otwórz tutaj okno poleceń”. (Myślę, że działa to w systemach Windows Vista i Windows 7.) Otworzy się okno wiersza polecenia, które wygląda mniej więcej tak:
Aby uruchomić program, wpisz następujące polecenie (zastępując nazwę skryptu):
... i naciśnij enter. (Jeśli pojawi się błąd, że „python” nie jest rozpoznanym poleceniem, zobacz http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Po zakończeniu działania programu, niezależnie od tego, czy zakończy się pomyślnie, czy nie, okno pozostanie otwarty, a wiersz polecenia pojawi się ponownie, aby wpisać inne polecenie. Jeśli chcesz ponownie uruchomić program, możesz nacisnąć strzałkę w górę, aby przywołać poprzednią komendę, którą wprowadziłeś i nacisnąć klawisz Enter, aby uruchomić ją ponownie, bez konieczności wpisywania nazwy pliku za każdym razem.
Użyj IDLE
IDLE to prosty edytor programów, który jest instalowany z Pythonem. Między innymi może uruchamiać twoje programy w oknie. Kliknij
.py
plik prawym przyciskiem myszy i wybierz „Edytuj w IDLE”. Gdy twój program pojawi się w edytorze, naciśnij F5 lub wybierz „Uruchom moduł” z menu „Uruchom”. Twój program będzie działał w oknie, które pozostanie otwarte po zakończeniu programu, w którym możesz wpisać polecenia Pythona, aby uruchomić je natychmiast.źródło
pythonw -m idlelib.idle
Rozwiązanie Timmerman działa świetnie podczas uruchamiania kodu, ale jeśli nie chcesz otrzymywać
Undefined name
błędów podczas używania płatków pyflake lub podobnego lintera, możesz zamiast tego użyć następujących:źródło
Redefining built-in 'input' (redefined-builtin)
,Unable to import '__builtin__' (import-error)
,Invalid constant name "input" (invalid-name)
.flake8
albopyflakes
tak, aby nie zająć cały dzień z bezsensownych ostrzeżeń.Oto fragment kodu, który umieściłem w swoich skryptach, których nie chcę uruchamiać w środowisku py2 / 3-agnostic:
Teraz możesz użyć real_raw_input. Jest dość drogi, ale krótki i czytelny. Korzystanie z surowych danych wejściowych jest zwykle czasochłonne (oczekiwanie na dane wejściowe), więc nie jest ważne.
Teoretycznie możesz nawet przypisać raw_input zamiast real_raw_input, ale mogą istnieć moduły, które sprawdzają istnienie raw_input i zachowują się odpowiednio. Lepiej pozostań po bezpiecznej stronie.
źródło
Prawdopodobnie nie jest to najlepsze rozwiązanie, ale zanim tu przybyłem, zrobiłem to w locie, aby kontynuować pracę bez szybkiej przerwy w nauce.
Potem, kiedy uruchamiam
raw_input('Enter your first name: ')
skrypt, nad którym pracowałem, rejestruje go tak, jak robiinput()
by zrobił.Może istnieć powód, aby tego nie robić, z którym jeszcze się nie spotkałem!
źródło
raw_input = input
?