Blackjack in Python



  • Hallo!

    Habe gestern versucht in Python ein kleines BlackJack Programm für die Konsole zu schreiben. Habe aber jetzt ein Problem bei meiner While-Schleife und ich komm einfach nicht drauf wo der Fehler liegt.
    Irgendwie schaffe ich es nicht die Summe der gezogenen Karten zu erhöhen und danach wieder in die Schleife zu gehen, bekomme immer diese Fehlermeldung "TypeError: unsupported operand type(s) for +: 'int' and 'str'"

    #!/ usr/bin/env python 
    # -*- coding : utf -8 -*- 
    
    # 21 Sieg
    
    import random
    
    #Spielername
    spielername = raw_input("Spielername: ")
    print("Herzlich Willkommen, " + spielername + "! Viel Glueck!")
    
    #Zufallszahl 1 - 11
    zahlenArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']
    zahl = random.choice(zahlenArray)
    
    #Die Zwischensumme des Spielers
    summe = 0 
    blackjack = 21
    
    while summe <= 21:
    	eingabe = raw_input("Weiterspielen?: ")
    	x = 0	
    
    	if(summe == 21):
    		print("Gratuliere Sie haben gewonnen!")
    
    	elif(eingabe == "ja"):
    		x = zahl		
    		print("Es wurde die Zahl " + x + " gezogen!")
    		summe = summe + x	#hier kommt die Fehlermeldung
    		print(summe)
    
    	else:
    		print("CIAOOOOOO")
    

    Ich hoffe ihr könnt mir das irgendwie weiterhelfen 😞

    Danke 🙂



  • x = zahl
    

    Zahl ist ein String und muss erst in einen Integer umgewandelt werden.



  • Ich habe zwar keine Ahnung von der Programmiersprache Python, aber ich würde sagen das die Variable "zahl" vom Typ string ist.
    Soviel ich weis ist Phython Stark Typisiert.

    *edit Toast hat die Frage schon beantwortet. 😉

    BENDR 😃



  • Danke schonmal für die schnellen Antworten 🙂

    aber wie genau muss ich das dann formulieren?

    ich hätte das jetzt so geschrieben:
    int x = zahl (so kenn ichs glaub ich noch aus dem Java)
    funktioniert natürlich nicht

    habe im Internet diese syntax zu Python gefunden:
    int(x[, base])

    aber was genau soll die Base sein?! wie definiere ich das jetzt in meinem fall? werd da irgendwie nicht schlau draus 😕



  • Hab kurz gegoogelt. Mit Int() kannst du z.B strings in int conventieren. (Zeile 2)

    elif(eingabe == "ja"):
    x = int(zahl)       
    print("Es wurde die Zahl " + x + " gezogen!")
    summe = summe + x    #hier kommt die Fehlermeldung
    

    Oder du befüllst den Zahlen Array mit int nicht mit Strings !

    zahlenArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    


  • Sheldor schrieb:

    strings in int conventieren.

    Konventionieren? Konfektionieren? 😃



  • _matze schrieb:

    Konventionieren? Konfektionieren? 😃

    Dividieren ?



  • danke sheldor, hab jetzt die variante mit dem array INT benutzt. hatte zwar dann wieder eine fehlermeldung, hab dann die zeile mit dem "Es wurde die Zahl"..... ausgeblendet und dann hats funktioniert, hat er Probleme damit, dass in dieser IF-Anweisung zwei PRINT Commands sind? oder stimmt da auch wieder was nicht bei der Syntax? ^^

    elif(eingabe == "ja"):
    		x = zahl				
    		print("Es wurde die Zahl " + x + " gezogen!")
    		summe = summe + x	
    		print(summe)
    


  • Da x jetzt ein Integer ist musst du diesen für die Ausgabe entsprechend in einen String umwandeln, z.B. so:

    print("Es wurde die Zahl " + str(x) + " gezogen!")
    

    Edit: Oder du gibst die einzelnen Teile als Argumente

    print("Es wurde die Zahl", x, "gezogen!")
    

    Dabei wird standardmäßig zwischen den Argumenten ein Leerzeichen eingefügt.


Anmelden zum Antworten