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.
-
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 nichthabe 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.