Erstmal sorry falls es schon ähnliche Beiträge über das Thema in diesem Forum geben sollte,
aber ich habe weder mit der Suchfunktion noch mit Google eine Antwort gefunden
welche mir bei der Lösung meines Problems weiterhilft...
Mein Ziel ist es durch das Problem auch etwas zu lernen, da mir hier bestimmt jemand
durch eine logische Erklärung hilft den Fehler zu verstehen um ihn in Zukunft zu vermeiden.
Da ich im Umgang mit Python noch nicht sehr viel Erfahrung habe, versuche ich momentan ein simples Mathespiel zu schreiben
um meine Programmierfähigkeiten in Python zu verbessern.
Zum Spielablauf:
Mein Spiel fragt am Anfang nach dem Namen des Spielers welcher durch (m)ein Modul namens name.py abgefragt
und in Form eines Strings zurück ins Spiel (in meinem Fall spiel_main.py) geliefert wird.
Dies klappt auch ohne Probleme.
Danach fragt es den Spieler ob er bereit sei für eine Tutorialaufgabe. Wenn man verneint und diese überspringt
gelangt man ohne Fehler zum Ende des Skriptes.
Zu meinem Problem:
Wenn man bestätigt man sei bereit sollte das von mir erstellte und ebenfalls separat liegende Modul namens tut.py,
welches die Tutorialaufgabe enthält, ausgeführt werden und ebenfalls einen Wert zurück liefern.
(Ähnlich wie es am Anfang des Skriptes mit dem Modul name.py schon einwandfrei funktioniert hat.)
Allerdings ergibt sich dann folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "/Users/fredi/Documents/spiel_main.py", line 47, in <module>
tut = tut.tut() # <--- Tutorial starten
AttributeError: 'int' object has no attribute 'tut'
Code: Alles auswählen
#Tutorial Aufgabe
import random
random.seed()
def tut():
a = random.randint(1,1000)
b = random.randint(1,1000)
c = a + b
print()
print("Bestimme den Wert von 'x'")
print()
print(a, "+", b, "= x")
for i in range(3, 0, -1):
x = int(input("x = "))
print()
if x == c:
print(x, "ist korrekt!")
print()
if i == 3:
print("WOW! Du hast es beim ersten Versuch geschafft!",
"Hervorragend, weiter so!")
if i == 2:
print("Gut, du hast es beim zweiten Versuch geschafft!",
"Gar nicht schlecht!")
if i == 1:
print("Phuu! Beim letzten Versuch doch noch geschafft!",
"Nochmal gut gegangen...")
print()
break
elif i > 1 and x != c:
print(x, "ist leider Falsch, Du kannst es noch", i - 1, "mal versuchen!")
print()
if x != c:
print(x, "ist leider auch Falsch...")
print(c, "wäre die richtige Antwort gewesen...")
print("Du hast verkackt..! -.-' ")
print()
tut = 2
return tut
else:
tut = 1
return tut
Aber wenn ich es durch das Spielskript versuche kommt es wieder zum oben genannte Fehler.
Was bedeutet das nun, dass das Objekt Int kein Attribut namens tut beinhalten soll?
Beim Modul name hat es ja auch geklappt und da mache ich ja im Grunde das selbe,
nur dass bei name ein String und bei tut ein Integer zurückgeliefert werden soll... :K
Ich habe, wie ich glaube, bei beiden Modulen etwa das gleiche gemacht und sie auf die selbe art aufgerufen.
name = name.name() und tut = tut.tut()
Ich bin echt ratlos und freue mich schon auf Lösungsvorschläge.
Falls es hilft kann ich ja auf Anfrage noch den Code der spiel_main.py und name.py Dateien posten.
Liebe grüsse Fredi