Python: Wie kann ich das Münzspiel anpassen, um bei Eingabe von "kopf" oder "zahl" die richtige Ausgabe zu erhalten?

2 Antworten

Du hast den Code wohl nicht selbst geschrieben? 🤨

Bei dem aktuellen Skript ist die Erwartungshaltung, dass der Nutzer als Tipp entweder K oder Z eingibt. Diese Eingabe wird dann mit der geworfenen Seite (ebenso K oder Z; ohne Berücksichtigung der Groß-/Kleinschreibung) verglichen.

Wenn der Tipp die Eingabe von Kopf/Zahl (case-insensitiv) erlauben soll, muss nach Wurf auch der Wert der Variable seite mit dem jeweiligen Wort (statt nur dem einzelnen Buchstaben) bestückt werden.

Sonnenblume633 
Fragesteller
 30.09.2023, 12:39

Alles selbst geschrieben? Warum

0
Sonnenblume633 
Fragesteller
 30.09.2023, 13:06
@TUrabbIT

Doch schon…sorry bin auch nur Schüler und habe neu damit angefangen. Unser Lehrer sagt immer, dass man aus Fehlern lernt und ich verstehe meinen Fehler einfach nicht

0
TUrabbIT  30.09.2023, 13:14
@Sonnenblume633

Es ist kein Fehler im Code, er funktioniert so wie er soll. Du möchtest eine andere Funktion.

0
Sonnenblume633 
Fragesteller
 30.09.2023, 12:40

Kannst du mir evtl sagen wo ich was korrigieren und einfügen muss? Ich verstehe es einfach nicht

0
regex9  30.09.2023, 13:01
@Sonnenblume633

An sich habe ich es oben schon geschrieben. Schau doch einfach einmal, womit der Tipp verglichen wird.

0
regex9  30.09.2023, 13:07
@Sonnenblume633

Richtig. Die nächste Frage wäre nun, welchen Wert die Variable seite derzeit (je Würfelfall) bekommt. Im Programm gibt es für jeden Fall eine entsprechende Zuweisung.

0
Sonnenblume633 
Fragesteller
 30.09.2023, 13:14
@regex9

Also so?

# Vergleich und aktualisiere Info nach dem Vergleich (in Kleinbuchstaben)

if Kopf== seite.lower():

print('Du hast gewonnen')

else:

print('Du hast verloren')

0
regex9  30.09.2023, 13:17
@Sonnenblume633

Mhn, wieso gerade da, wo du doch schon festgestellt hast, dass in seite entweder K oder Z steht und in tipp die Eingabe des Nutzers (kopf/zahl/was auch immer)?

0
regex9  30.09.2023, 13:28
@Sonnenblume633

Der Nutzer gibt einen Tipp ab, dann wird eine Zufallszahl (0 oder 1) ausgewürfelt. Die Variable seite ist nun dazu da, je gewürfelter Zahl ein textuelles Synonym / einen textuellen Ersatzwert zu finden, welches/r mit der Nutzereingabe abgeglichen wird. Das könnte man sich eigentlich sparen, indem man den Nutzer auffordert, direkt 0 oder 1 einzugeben. Aber das möchte man hier nicht, stattdessen wird festgelegt, dass 0 = K ist und 1 = Z. Du möchtest nun andere Synonyme. Du möchtest für 0 kopf und für 1 zahl.

1
Sonnenblume633 
Fragesteller
 30.09.2023, 13:31
@regex9

Also muss ich jetzt bei:

if zufallszahl == 0:

info = 'Kopf ist gefallen.'

seite = 'Kopf‘

else:

info = 'Zahl ist gefallen.'

seite = 'Zahl‘

1
Sonnenblume633 
Fragesteller
 30.09.2023, 13:34
@Sonnenblume633

Okay nein das verändert nicht…wenn ich das so abändere, schaff ich es wenn ich Kopf schreibe auch Kopf als Gewinn identifiziert zu bekommen, jetzt aber wenn ich K schreibe ist es ein Fehler…also muss ich jetzt wohlmöglich if zufallszahl == 0:

info = 'Kopf ist gefallen.'

seite = 'Kopf || k‘

else:

info = 'Zahl ist gefallen.'

seite = 'Zahl || z‘

eingeben oder?

0
regex9  30.09.2023, 13:56
@Sonnenblume633
(...) wenn ich das so abändere, schaff ich es wenn ich Kopf schreibe auch Kopf als Gewinn identifiziert zu bekommen (...)

Das ist das, was du wolltest.

(...) jetzt aber wenn ich K schreibe ist es ein Fehler (...)

Das beides möglich sein soll, ist eine neue Anforderung.

seite = 'Kopf || k‘

Alles was in Anführungszeichen steht, ist eine Zeichenkette (in der erfolgt keine Auswertung von Ausdrücken). Der Nutzer müsste nun also Kopf || k oder Zahl || z eingeben, um eine Gewinnchance zu haben.

Lege doch einfach eine neue Variable an, die sich so wie seite verhält, nur eben für die k/z-Option. Wenn später geprüft wird, ob der Tipp der Eingabe entsprach, vergleichst du den Tipp mit der neuen Variable und mit seite. Das heißt, wenn der Tipp dem Wert von seite oder wenn der Tipp dem Wert der neuen Variable entspricht, hat der Nutzer das Spiel gewonnen.

1

Dein Programm erwartet K oder Z als Eingabe. Wenn du etwas anderes möchtest, dann musst du den Wert der "seite" zugeordnet wird anpassen, damit wird das abgeglichen

Woher ich das weiß:Berufserfahrung – Software Entwickler
Sonnenblume633 
Fragesteller
 30.09.2023, 13:04

ich verstehe es nicht :/

0
Sonnenblume633 
Fragesteller
 30.09.2023, 13:06

und wie soll ich das anpassen?

0
TUrabbIT  30.09.2023, 13:15
@Sonnenblume633

In dem if Block wird der Variable "seite" entweder K oder Z zugewiesen. Deine Eingaben landen in der Variable "tipp". Beides wird am Ende in Kleinbuchstaben umgewandelt und verglichen. Andere Eingabe => andere Zuweisung zu "seite"

0
Sonnenblume633 
Fragesteller
 30.09.2023, 13:16
@TUrabbIT

Also so?

# Vergleich und aktualisiere Info nach dem Vergleich (in Kleinbuchstaben)

if Kopf und Zahl== seite.lower():

print('Du hast gewonnen')

else:

print('Du hast verloren')

0