python string-formatting typeerror

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