non tutti gli argomenti convertiti durante la formattazione della stringa.. NO % variabili

x = input()
y = 1 
print (x)
while 1 == y:
if x == 1:
    y == y + 1
elif x % 2 == 0: #even
    x = x // 2
    print (x)
else:
    x = 3 * x + 1
    print (x)

Se si sa cosa la congettura di Collatz è, sto cercando di creare una calcolatrice per che. Voglio avere x esempio il mio ingresso in modo non devo cambiare x il numero e salvare ogni volta che voglio provare un nuovo numero.

Ottengo il seguente errore

TypeError: non tutti gli argomenti convertiti durante la formattazione della stringa’
alla riga 7.

Si prega di aiutare un noobie fuori.

  • Si noti che il codice riportato di seguito il ciclo while non è correttamente indentato.

 

One Reply
  1. 7

    Il problema è che si prende l’input dell’utente:

    x = input()

    Ora x è un str. Così, su questa linea:

        elif x % 2 == 0: #even

    Il % operatore agisce come un stringa di interpolazione operatore.

    >>> mystring = "Here goes a string: %s and here an int: %d" % ('FOO', 88)
    >>> print(mystring)
    Here goes a string: FOO and here an int: 88
    >>>

    Tuttavia, il input hai dato non ha un identificatore di formato, quindi:

    >>> "a string with no format specifier..." % 10
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: not all arguments converted during string formatting
    >>>

    È necessario convertire l’input dell’utente in una int per il % operatore per eseguire l’operazione modulo.

    x = int(input())

    Adesso, è fare ciò che si vuole:

    >>> x = int(input("Gimme an int! "))
    Gimme an int! 88
    >>> x % 10
    8
    >>>

Lascia un commento