una - Las declaraciones else y elif no funcionan en Python
python simbolo (8)
Además de que tu sangría es incorrecta. El código no funciona. Sé que estás usando Python 3. algo. Estoy usando python 2.7.3, el código que realmente funcionará para lo que intentas lograr es esto.
number = str(23)
guess = input(''Enter a number: '')
if guess == number:
print(''Congratulations! You guessed it.'')
elif guess < number:
print(''Wrong Number'')
elif guess < number:
print("Wrong Number'')
La única diferencia que le diría a python es que el número es una cadena de caracteres para que el código funcione. Si no va a pensar es un entero. Cuando alguien ejecuta el código, están ingresando una cadena y no un entero. Hay muchas formas de cambiar este código, pero esta es la solución fácil que quería ofrecer. Hay otra manera en la que no puedo pensar sin convertir el 23 en una cadena. O puede poner "23" comillas o puede usar la función int () en la entrada. eso transformaría cualquier cosa que ingresen y un número entero.
Soy un novato en Python y actualmente estoy aprendiendo comandos de Control Flow como if
, else
, etc.
La instrucción if
funciona bien, pero cuando escribo los comandos else
o elif
, el intérprete me da un error de sintaxis. Estoy usando Python 3.2.1 y el problema está surgiendo tanto en su intérprete nativo como en IDLE.
Lo sigo tal como aparece en el libro ''A Byte Of Python'' . Como puede ver, elif
y el else
están dando Sintaxis no válida .
>> number=23
>> guess = input(''Enter a number : '')
>> if guess == number:
>> print(''Congratulations! You guessed it.'')
>> elif guess < number:
**( It is giving me ''Invalid Syntax'')**
>> else:
**( It is also giving me ''Invalid syntax'')**
¿Por qué está pasando esto? Estoy obteniendo el problema tanto en IDLE como en la Python interactiva. Espero que la sintaxis sea la correcta.
El problema es la línea en blanco que está escribiendo antes de else
o elif
. Presta atención al aviso que te dan. Si es >>>
, Python espera el inicio de una nueva declaración. Si es ...
, entonces espera que continúes una declaración anterior.
En IDLE y en la Python interactiva, ingresaste dos CRLF consecutivos, lo que te sacará de la sentencia if. Es el problema de IDLE o python interactivo. Estará bien cuando uses cualquier tipo de editor, solo asegúrate de que tu sangría esté bien.
Parece que estás ingresando una línea en blanco después del cuerpo de la instrucción if
. Esta es una indicación del compilador interactivo de que ha terminado con el bloque por completo, por lo que no está esperando ningún bloque elif
/ else
. Intente ingresar el código exactamente así, y solo presione enter una vez después de cada línea:
if guess == number:
print(''Congratulations! You guessed it.'')
elif guess < number:
pass # Your code here
else:
pass # Your code here
Python puede generar el mismo error de ''sintaxis no válida'' incluso si la identificación para el bloque ''elif'' no coincide con la identificación del bloque ''if'' (pestañas para la primera, espacios para la segunda o viceversa).
Recuerde que, de forma predeterminada, el valor de retorno de la entrada será una cadena y no un entero. No puede comparar cadenas con valores booleanos como <,>, =>, <= (a menos que esté comparando la longitud). Por lo tanto, su código debería verse así:
number = 23
guess = int(input(''Enter a number: '')) # The var guess will be an integer
if guess == number:
print(''Congratulations! You guessed it.'')
elif guess != number:
print(''Wrong Number'')
elif
y de lo else
deben seguir inmediatamente el final del bloque if
, o Python asumirá que el bloque se ha cerrado sin ellos.
if 1:
pass
<--- this line must be indented at the same level as the `pass`
else:
pass
En su código, el intérprete finaliza el bloque if
cuando se realiza la sangría, por lo que el elif
y el else
no están asociados con él. Por lo tanto, se están entendiendo como declaraciones independientes, lo que no tiene sentido.
En general, intente seguir las pautas de estilo , que incluyen la eliminación de espacios en blanco excesivos.
if guess == number:
print ("Good")
elif guess == 2:
print ("Bad")
else:
print ("Also bad")
Asegúrese de tener su identificación correcta. La sintaxis está bien.