def, input, define ""

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ilepix
User
Beiträge: 2
Registriert: Montag 26. März 2018, 23:25

Hey ich hab ne kleine Frage, wie kann ich mein "GamerTag" in verschiedenen defs definieren


Bin neu


PS : Programm ist neu und nicht fertig


Gruß Elias

Code: Alles auswählen




def EnterGamerTag():
    
    print("===================================")
    print("Please enter your gamer tag here : ")
    print("===================================")
    GamerTag = input("")
    print("Your registered gamer tag is", GamerTag, "Is that right")
    answer1 = input("")
    if "Yes" in answer1:
        EnterResults()
    elif "No" in answer1:
        print ("LOLO")
    elif answer1 != "Yes" and answer1 !="No":
        g = input("Press any key to retry")
        EnterGamerTag()





    


#def AccessResults():
    


def EnterResults():
    print("===================================")
    print("Hey, to make a statistic, we need")
    print("you to enter your game results")
    print("===================================")
    hits = input("Please enter your hits")
    misses = input("Please enter your misses")
    Qoute = (int(hits) / int(misses));
    Points = (int(hits) * 10)
    if (int(hits) > 25):
        Points = (int(Points) + 75)
    print("Calculating...")
    print("Your hits and misses are", hits, "/", misses)
    print("So your hits and misses quote is", Qoute)
    print ("You earned", Points, "experience points in this game")
    SaveResults()



def SaveResults():

    print("Do you want to save your stats for ", GamerTag, "?" )
    answer2 = input("")
    if "Yes" in answer2:
        print("Ok, we will safe your stats for", GamerTag)
        file = open("{}.txt".format(GamerTag), "w+")
        file.write("{}".format(GamerTag))
        file.write("{}".format(hits))
        file.write("{}".format(misses))
        
         




        
    elif "No" in answer2:
        print ("LOLO")
    elif answer2 != "Yes" and answer2 !="No":
        g = input("Invalid answer, press any key to retry")
        SaveResults(GamerTag, hits, misses)
        
       

def menu():
    print("PRESS ONE")
    choice = input()

    if choice == "1":
            EnterGamerTag()

    if choice =="2":
            EnterResults()



menu()
__deets__
User
Beiträge: 14537
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die ‚defs‘ heißen Funktionen. Und dein GamerTag solltest du mit return zurückgeben, und dann als Argument in EnterResults reinreichen.

Außerdem bitte deinen Code mt Code Tags markieren, und ein Blick auf PEP8 zu Konventionen für Namen wäre auch eine hütender.
ilepix
User
Beiträge: 2
Registriert: Montag 26. März 2018, 23:25

Danke,

ich habe jetzt unter die Funktion "EnterGamerTag" "return GamerTag" gesetzt und GamerTag als Argument in "SaveResults" gekennzeichnet...
funktioniert aber immernoch nicht...




Gruß
Elias
__deets__
User
Beiträge: 14537
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte den Code zeigen. Denn gegen tut das ganz bestimmt.

Code: Alles auswählen

def foo():
      return "tag"


der bar(dings):
      print(dings)


def main():
      tag = foo()
      bar(tag)
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@ilepix: alles, was eine Funktion an Variablen braucht, bekommt sie über ihre Argumente und Ergebnisse werden per `return` zurückgegeben. Der Aufrufer muß dann mit den Rückgabewerten auch was machen, also z.B. einer Variable zuweisen.

Dein Programmfluß ist nicht optimal. Funktionen machen eine Aufgabe und geben den Kontrollfluß wieder an den Aufrufer zurück. Du rufst aber immer wieder eine weitere Funktion auf: Funktionen sind keine Sprungmarken.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Die Abfrage der Benutzereingaben ist nicht so schön gelöst. Was machst du, wenn der Benutzer beim zweiten Versuch auch wieder etwas anderes als Yes oder No eingibt? Was passiert bei den Spielergebnissen, wenn sie keine Zahlen sind?

Ich habe hier mal ein kleines Modul vorgestellt, das diese Thematik behandelt und an dem du dich gern orientieren kannst. Du darfst von mir aus auch Codestellen kopieren oder gleich das Modul als Ganzes verwenden (dann aber bitte den Copyright Vermerk drin lassen).

EDIT:
Okay, bei der Yes-No-Abfrage ruft die Funktion sich nochmal auf. Kann theoretisch irgendwann zum Abbruch wegen zu hoher Rekursionstiefe führen, ist praktisch gesehen aber eher unwahrscheinlich. Die alternative Lösung wäre halt eine while-True-Schleife, die verlassen wird, sobald die Eingabe korrekt war.
Antworten