2016-04-27 14 views
-1

Ich habe dieses Programm, das den Benutzer fragt, um 10 mathematische Fragen zu beantworten, jedes Mal, wenn sie eine Antwort richtig erhalten, wird 1 Punkt zu ihrer Punktzahl hinzugefügt.Python, Schreiben in txt mit mehreren Argumenten

current_class = Classes[student_class] 
class_score = open(current_class, 'r+') 
class_format = (name, "has a score of", Score) 
class_score.write(class_format) 
print(class_score.read()) 

Allerdings, wenn ich die TXT-Datei zu lesen gibt es den Fehler

TypeError: must be str, not tuple 

Ich will es drucken:

Imran has a score of 10 

Antwort

0

Sie tun können,

class_score.write("{} has score {}".format(name, score)) 

oder

print("{} has score {}".format(name, score), file=class_score) 

diese Weise können Sie auch die folgende tun konnte

print(*class_format, file=class_score) 

Ich würde es vorziehen, die zweite ein.

0

Verwenden str.join eine Zeichenfolge aus dem Tupel zu bauen.

class_format = (name, "has a score of", Score) 
class_score.write(" ".join(class_format)) 
2

class_format sollte sein:

class_format = "{} has a score of {}".format(name, Score) 

Überprüfen Sie die docs (Abschnitt 7.1.3.1)

+0

Danke, wissen Sie, wie ich in der Lage wäre zu suchen, wenn ein Benutzer (die Eingabe den gleichen Namen jedes Mal, wenn das Programm ausgeführt wird) mehr als 3 Bewertungen hat? Ich schätze, ich könnte die any() -Funktion verwenden, aber ich bin mir nicht sicher. Ich möchte nur sicherstellen, dass das Programm den ältesten Punktestand löscht, wenn es 3 Punkte für einen Benutzer gibt –

Verwandte Themen