2010-11-04 16 views
6

Voglio che il programma si interrompa e attenda fino a quando non si preme un tasto qualsiasi per continuare, ma raw_input() sta andando via e input() sta sostituendolo. Così ho
var = input ("Premere invio per continuare") e aspetta finché non premo invio, ma poi fallisce con SyntaxError: unexpected EOF while Parsing. Funziona bene su un sistema con Python 3, ma questo è Linux Python 2.6 e odio dover codificare in raw_input() dato che sta andando via. Qualche suggerimento?c'è un modo per utilizzare l'input ("Premere qualsiasi tasto per continuare") sulla versione 2.6

+5

Invia per favore il ** codice ** effettivo e ** i messaggi di errore ** effettivi che stai ** effettivamente ** ricevendo. –

+0

Questo non dovrebbe essere un errore di sintassi - Python 2.6 supporta la funzione 'input'. Potresti mostrarci il resto del codice per favore? – Smashery

+1

@smashery: causerà comunque un errore di sintassi se l'espressione immessa contiene un errore di sintassi, ad esempio premendo semplicemente enter – recursive

risposta

9

Usa questa

try: 
    input= raw_input 
except NameError: 
    pass 

Se raw_input esiste, verrà utilizzato per l'input. Se non esiste, esiste ancora input.

+0

Mi piace questo. Ha funzionato alla grande ed è semplice – Dag

+0

+1 Anche se penso che sarebbe stato meglio se ci fosse un'importazione '__future__' per questo, non c'è, quindi questo è il modo migliore –

3

si potrebbe fare qualcosa sulla linea di ...

def myinput(prompt): 
    try: 
     return raw_input(prompt) 
    except NameError: 
     return input(prompt) 

... ma non lo fanno .

Invece, è sufficiente utilizzare raw_input() sul programma, quindi utilizzare 2to3 per convertire il file in python 3.x. Ciò convertirà tutti gli raw_input() per te e anche altre cose che potresti perdere.

Questo è il modo consigliato per mantenere un software funzionante su python 2 e python 3 e mantenere il buon equilibrio.

+0

ma se metto il file tra due caselle, odio dover convertire sempre – Dag

+0

quindi non c'è modo in 2.6 per far funzionare input()? – Dag

+0

No, esegue una valutazione dell'input. Avrai bisogno di cambiare il modo in cui è definito l'input. http://docs.python.org/library/functions.html?highlight=input#input – dcolish

1
import os 
os.sys('pause') 

È possibile utilizzare questo modulo su Windows.

Problemi correlati