2014-04-29 11 views
12

Tak więc jestem BARDZO nowy w programowaniu i zacząłem od Pythona 3. Zacząłem czytać "Learn Python the Hard Way". Teraz dotarłem do punktu, w którym miałem ten kod:TypeError: nieobsługiwany typ (y) argumentu dla%: 'NoneType' i 'str'

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 

ja naprawdę nie wiem różnicę między %r, %s i %d. Błąd, który dostaję, to TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' Nie mam pojęcia, co robić i jak to naprawić. Proszę wyjaśnić, w jaki sposób mogę sprawić, by działało i dlaczego nie zadziała. Jaka jest różnica między% r, d i s? Jakieś przydatne linki? Z góry dziękuję.

+2

dlaczego spadł? to jest nowy użytkownik, nie ścigajmy go bez wyjaśnienia. – markg

+0

@markg Domyślam się, że pytanie jest bardzo słabe i znalezienie tego typu rzeczy jest banalne. – juanchopanza

+0

@markg, ponieważ błąd mówi OP dokładnie, jaki jest problem? – jonrsharpe

Odpowiedz

10

Chcesz zastosować % do łańcucha zamiast :

print("I said: %r" % x) 

Kod jest stosowanie go do wartości zwracanej zaproszenia print(), która zwraca None.

Alternatywnie, można przełączyć się za pomocą str.format():

print("I said: {!r}".format(x)) 
6

Jesteś wywołaniem % poza funkcją print(). Spowoduje to sprawdzenie, czy faktyczna funkcja print może zostać wydrukowana jako %r, a ponieważ print niczego nie zwraca, próbuje uzyskać %r dla wartości None (stąd błąd NoneType). Zmień go na adres:

print("I said: %r" %(x)) 

Poniższy kod:

#!/usr/local/bin/python3 
x = "Hello" 
print ("Hello World! %s") %(x) 

Podnosi się następujący błąd:

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' 

zmiany kodu do następujących prac:

#!/usr/local/bin/python3 
x = "Hello" 
print ("Hello World! %s" %(x)) 

Output :

Hello World! Hello 
Powiązane problemy