Jak używać surowych danych wejściowych w Pythonie 3

import sys
print (sys.platform)
print (2 ** 100)
raw_input( )

Używam Pythona 3.1 i nie mogę uzyskać raw_input ,aby "zamrozić" wyskakujące okienko dos. Książka, którą czytam jest dla 2.5 i używam 3.1

Co mam zrobić, żeby to naprawić?
Author: Martijn Pieters, 2009-06-05

8 answers

raw_input() zmieniono nazwę na input()

Z http://docs.python.org/dev/py3k/whatsnew/3.0.html

 773
Author: balpha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-05 08:52:46

To działa w Pythonie 3.x i 2.x:

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
 94
Author: Cees Timmerman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 11:34:04

Niezawodnym sposobem na rozwiązanie tego problemu jest

from six.moves import input

Six jest modułem, który łata wiele z 2/3 wspólnych punktów bólu bazy kodu.

 32
Author: tacaswell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-28 21:05:42

W Pythonie 3.xx you just need input() not raw_input()

 14
Author: Efs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-23 14:25:04

Jak wskazywali inni, Funkcja raw_input została przemianowana na input w Pythonie 3.0, i naprawdę lepiej by Ci służyła bardziej aktualna książka, ale chcę podkreślić, że są lepsze sposoby, aby zobaczyć wynik twojego skryptu.

Z twojego opisu wynika, że używasz Windows, zapisałeś plik .py, a następnie klikasz go dwukrotnie, aby go uruchomić. Pojawiające się okno terminala zamyka się natychmiast po zakończeniu programu, więc nie możesz zobaczyć, jaki jest wynik twojego program był. Aby to rozwiązać, Twoja książka zaleca dodanie raw_input / input polecenie oczekiwania, aż użytkownik naciśnie klawisz enter. Jednak, jak już zauważyłeś, jeśli coś pójdzie nie tak, na przykład błąd w programie, ta instrukcja nie zostanie wykonana i okno zostanie zamknięte bez możliwości zobaczenia, co poszło nie tak. Może być łatwiej używać wiersza polecenia lub bezczynności.

Użyj wiersza polecenia

Gdy patrzysz na okno folderu, które zawiera Twój program w Pythonie, przytrzymaj przesuń i kliknij prawym przyciskiem myszy w dowolnym miejscu na białym tle okna. Menu, które wyskakuje powinno zawierać wpis "Otwórz okno poleceń tutaj". (Myślę, że to działa na Windows Vista i Windows 7.) Otworzy się okno wiersza polecenia, które wygląda mniej więcej tak:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

    C:\Users\Weeble\My Python Program>_

Aby uruchomić program, wpisz następujące (zastępując nazwę skryptu):

    python myscript.py

...i naciśnij enter. (Jeśli pojawi się błąd, że" python " nie jest rozpoznawanym poleceniem, zobacz http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) kiedy program zakończy działanie, niezależnie od tego, czy zakończy się pomyślnie, czy nie, okno pozostanie otwarte, 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ć poprzednie wprowadzone polecenie i nacisnąć enter, aby uruchomić go ponownie, zamiast za każdym razem wpisywać nazwę pliku.

Użycie IDLE

IDLE jest prostym edytorem programów, który jest instalowany z Pythonem. Wśród innych funkcji może uruchamiać programy w oknie. Kliknij prawym przyciskiem myszy plik .py i wybierz "Edytuj w trybie bezczynności". Gdy twój program pojawi się w edytorze, naciśnij klawisz F5 lub wybierz "Uruchom moduł" z menu "Uruchom". Twój program będzie działał w oknie, które pozostaje otwarte po jego zakończeniu i w którym możesz wprowadzić polecenia Pythona, aby je natychmiast uruchomić.

 13
Author: Weeble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-06 12:31:40

Rozwiązanie Timmermana działa świetnie podczas uruchamiania kodu, ale jeśli nie chcesz uzyskać Undefined name błędów podczas korzystania z pyflakes lub podobnego lintera, możesz użyć następującej opcji:

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass
 6
Author: jmagnusson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-20 09:59:45

Oto fragment kodu, który umieściłem w skryptach, którego nie chcę uruchamiać w środowisku py2/3-agnostycznym:

# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)

Teraz możesz użyć real_raw_input. Jest dość drogi, ale krótki i czytelny. Korzystanie z surowego wejścia jest zwykle kosztowne (oczekiwanie na wejście), więc nie jest ważne.

Teoretycznie można nawet przypisać raw_input zamiast real_raw_input, ale mogą istnieć moduły, które sprawdzają istnienie raw_input i zachowują się odpowiednio. Lepiej trzymaj się bezpiecznej strony.

 5
Author: ChewbaccaKL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-22 11:02:21

Prawdopodobnie nie jest to najlepsze rozwiązanie, ale zanim tu przyjechałem, zrobiłem to w locie, aby pracować bez szybkiej przerwy od nauki.

def raw_input(x):
  input(x)

Następnie, gdy uruchamiam raw_input('Enter your first name: ') na skrypcie, nad którym pracowałem, rejestruje go tak, jak zrobiłby to input().

Może być powód, by tego nie robić, na który jeszcze się nie natknąłem!
 1
Author: Danijel-James W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-25 04:50:25