2016-03-23 22 views
-2

Versucht, diesen Code auszuführen, aber Fehler sagt, dass ich einen Fehler mit .title gemacht habe. Wie kann ich das beheben? (Bitte beachten Sie, dass ich immer noch ein Amateur in der Welt von Python bin und offen für Vorschläge bin, die meinen Code verbessern könnten. Allerdings besteht die Möglichkeit, dass ich es nicht verstehen werde, es sei denn, es ist etwas Neues, zB verwenden __________ statt _________)AttributeError: 'NoneType' -Objekt hat kein Attribut 'title'

Hier ist mein Code:.

import time 
import sys 

print("Welcome to my quiz") 
time.sleep(2) 
input('Press enter to continue') 

score = int(0) 
failed = int(0) 

def points(): 
    print("Correct! Well done!") 
    global score 
    score = score + 1 

def fail(): 
    print("Oh no, that is incorrect") 
    global failed 
    failed = failed + 1 

def printtotal(): 
    global score 
    global failed 
    print("You have ",score,"points, and ",failed,"/3 lives used.") 

if failed == 5: 
    sys.exit('Program terminated.') 

print('You will have 5 seconds to answer each question \nIf you fail 5 times or more, the program will exit') 
time.sleep(3) 
print('Good luck!') 
time.sleep(2) 

q1 = print(input("What is the capital of England?")).title 
if q1 == 'London': 
    points() 
else: 
    fail() 
printtotal() 

q2 = print(input("Who is the prime minister's wife?")).title 
if q2 == 'Samantha' or 'Samantha Cameron': 
    points() 
else: 
    fail() 
printtotal() 

print('How would you say \'I came, I saw, I conquered\' in latin?') 
print('a) veni, vidi, vici') 
print('b) veni, vedi, vici') 
print('c) vini, vedi, vici') 
q3 = print(input('Type the letter here:')) 
if q3 == 'a)' or 'a': 
    points() 
else: 
    fail() 
printtotal() 

Wenn ich versuche, diesen Code auszuführen, ist dies der Fehler erhalte ich:

Traceback (most recent call last): 
    File "/root/Desktop/Python_Stuff/quiz.py", line 34, in <module> 
    q1 = print(input("What is the capital of England?")).title 
AttributeError: 'NoneType' object has no attribute 'title' 

Wenn jemand mehr zu beschmutzen geschieht Fehler, bitte sag es mir. Wie kann ich diesen Fehler beheben?

+0

Sie müssen die zweite schließende Klammer bewegen das Ende der Linie. Sie sollten auch '.title()', nicht '.title'. – zondo

+2

Ich sah wie 4 Python-Fragen mit Tippfehlern in der letzten Stunde, ich fühle mich wie eine Python-Aufgabe, die morgen an irgendeiner Universität fällig ist. –

Antwort

1

Die Funktion print gibt nichts zurück, genauer gesagt gibt sie NoneType zurück. Daher können Sie den Wert des Elements title nicht abrufen.

print(input("What is the capital of England?")).title 

entspricht:

answer = input("What is the capital of England?") 
print(answer).title 

Aber print(answer) einfach aus druckt, was der Benutzer eingegeben und dann ein Objekt keine zurück. Was Sie wirklich wollen, ist:

print(input("What is the capital of England?").title()) 

See this for more about print and title.

Dies wird ein anderes Problem mit Ihrem Code aufdecken, dass Sie versuchen, die Frage zu gleichzeitig eingegeben etwas und drucken, für die Sie eingeben möchten. In diesem Fall this is what you want:

q1 = input("What is the capital of England?") # This will automatically print 'What is...' when it reaches this point in the program 

Die oben wird die Benutzereingabe zu q1 speichern.

+0

Was er eigentlich will, ist die Eingabe in den Variablen 'q1',' q2' etc. zu speichern, so dass der Ausdruck auch falsch ist. –

0

Die Fehlermeldung zeigt an, dass das Problem mit dieser Linie ist:

q1 = print(input("What is the capital of England?")).title 

Was sind Sie denn hier für eine Benutzereingabe fragt (mit input Funktion von python3.x) und Druck dann dieses Ergebnis Standard out (normalerweise ist das der Bildschirm oder "das Terminalfenster"). print gibt jedoch nichts Besonderes zurück, sodass in der Python-Terminologie None zurückgegeben wird. None ist ein Singleton (es ist ein spezieller Variablentyp), der nicht über das Attribut title verfügt. Daher können Sie z. None.title.

Erwägen Speicherung nur die Eingabe zu q1, wie folgt aus:

q1 = input("What is the capital of England?") 
0

print() kehrt None. Daher erhöht print(...).title die AttributeError, die Sie sehen.

0

print hat kein Attribut namens "title".Das heißt, können Sie nicht tun:

print().title 

Wirklich denke ich, was Sie tun möchten, ist ganz aus print() loszuwerden, so wie folgt aus:

q1 = input("What is the capital of England?") 
if q1 == 'London': 
Verwandte Themen