python - TypeError: tipo(s) de operando no soportados para%: ''NoneType'' y ''str''
string-formatting (2)
Así que soy MUY nuevo en programación y empecé con Python 3. Comencé a leer "Aprende Python de la manera difícil". Ahora, llegué a un punto donde tenía este código:
x = "There are %d types of people." % 10
binary = "binary"
do_not = "don''t"
y = "Those who know %s and those who %s" % (binary, do_not)
print(x)
print(y)
print("I said: %r") % x
Realmente no sé la diferencia entre %r , %s %d . El error que recibo es TypeError: unsupported operand type(s) for %: ''NoneType'' and ''str'' No tengo idea de qué hacer y cómo solucionarlo. Por favor, explique cómo puedo hacer que funcione y por qué no funcionará. Además, ¿cuál es la diferencia entre% r, d y s? ¿Algún enlace útil? Gracias de antemano.
Desea aplicar % a la cadena en su lugar:
print("I said: %r" % x)
Su código lo está aplicando al valor de retorno de la llamada a print() , que devuelve None .
Alternativamente, puedes cambiar a usar str.format() :
print("I said: {!r}".format(x))
Está llamando al % fuera de la función print() . Esto intenta ver si la función de print real puede imprimirse como %r , y debido a que la print no devuelve nada, intenta obtener %r para el valor None (de ahí el error NoneType ). Cambiarlo a:
print("I said: %r" %(x))
El siguiente código:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s") %(x)
Plantea el siguiente error:
Hello World! %s
Traceback (most recent call last):
File "main.py", line 3, in
print ("Hello World! %s") %(x)
TypeError: unsupported operand type(s) for %: ''NoneType'' and ''str''
Cambiando el código a los siguientes trabajos:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s" %(x))
Salida:
Hello World! Hello