• Lernkarte - Stein, Schere, Papier (Python)
  • Christian Leeser
  • 12.07.2023
  • Informatik
  • 9, 10
Um die Lizenzinformationen zu sehen, klicken Sie bitte den gewünschten Inhalt an.
Pro­gramm­be­schrei­bung und
Fluss­dia­gramm
Hin­weis

Die­ses Pro­gramm spielt mit dem User Stein, Sche­re, Pa­pier. Dabei wer­den Punk­te ver­ge­ben.

Die Um­set­zung des Pro­gramm ver­wen­det:

- while-​Schleife

- if-​Abfrage

- Va­ri­a­blen

- In­kre­men­tie­ren

Schritt-​für-​Schritt-​Anleitung

In dem fol­gen­den Teil führt Schritt-​für-​Schritt durch das Fluss­dia­gramm.



Am Ende die­ser An­lei­tung steht das voll­stän­di­ge Pro­gramm pas­send zum Fluss­dia­gramm.

1. Schritt: Die Ein­ga­be (Zeile 1 und 3)

Die Va­ri­a­blen z, g und c wer­den de­kla­riert. c dient zum Hoch­zäh­len, um die An­zahl der Ver­su­che ein­zu­hal­ten. p zählt die Punk­te vom User und k die Punk­te vom Com­pu­ter.

Python
from random import *
def getGewonnen():
global p
p += 1
print("Gewonnen " , str(p) , "/" , str(k))
def getVerloren():
global k
k += 1
print("Verloren " , str(p) , "/" , str(k))
c = 1
p = 0
k = 0

2. Schritt: Die while-​Schleife (Zeile 5 bis 7)

So­lan­ge c klei­ner 4 (also 3 Ver­su­che) ist, läuft das Spiel durch.

Die Va­ri­a­ble n wird mit dem Wert aus "prompt" de­kla­riert.

Der Zäh­ler z er­zeugt Zu­falls­zah­len: 1 für Stein, 2 für Sche­re und 3 für Stein.

Python
from random import *
def getGewonnen():
global p
p += 1
print("Gewonnen " , str(p) , "/" , str(k))
def getVerloren():
global k
k += 1
print("Verloren " , str(p) , "/" , str(k))
c = 1
p = 0
k = 0
while c < 4:

3. Schritt: Die Ab­zwei­gun­gen (Zeile 21 bis 39) und Funk­ti­o­nen (Zeile 3 bis 11)

Die Zeile 1 lädt die Bi­blio­thek, um die Zu­falls­zah­len ge­ne­rie­ren zu kön­nen.



Da sich die Aus­sa­gen wie­der­ho­len zu Ge­won­nen und Ver­lo­ren gibt es zwei Funk­ti­o­nen get­Ver­lo­ren() und get­Ge­won­nen(). Die Ab­fra­ge un­ter­schei­det zu­nächst, ob ein Un­ent­schie­den ge­ge­ben ist. Da­nach er­folgt die Fall­un­ter­schei­dung zwi­schen Ge­won­nen und Ver­lo­ren.

Python
from random import *
def getGewonnen():
global p
p += 1
print("Gewonnen " , str(p) , "/" , str(k))
def getVerloren():
global k
k += 1
print("Verloren " , str(p) , "/" , str(k))
c = 1
p = 0
k = 0
while c < 4:
z = randint(1, 3)
n = int(input('Wähle Stein (1), Schere (2), Papier (3): '))
if z == n:
print('Unentschieden ' + str(p) + "/" + str(k))
elif z == 1:
if n == 2:
getVerloren()
else:
getGewonnen()
elif z == 2:
if n == 3:
getVerloren()
else:
getGewonnen()
elif z == 3:
if n == 1:
getVerloren()
else:
getGewonnen()
c += 1

ENDE

Auf­ga­ben
1
Baue das Pro­gramm mit Hilfe der Schritt-​für-​Schritt-​Anleitung nach.
Füge in dem Quell­code pas­send zu den Schrit­ten Kom­men­ta­re ein, die den je­wei­li­gen Teil in sei­ner Funk­ti­on be­schrei­ben.
Python
# Ein "Hashtag" ergibt einen Zeilenkommentar
"""Drei Anführungszeichen am Anfang und Ende ergeben
einen Kommentar auf mehreren Zeilen"""
2
Über­le­ge Dir mög­li­che Ver­bes­se­run­gen für das Pro­gramm. Bei­spiels­wei­se:
  • Könn­te der Text der Ein­ga­be und der Aus­ga­be ver­bes­sert wer­den.
  • Lässt sich der Schwie­rig­keits­grad er­hö­hen?
  • Mit lo­gi­schen Ope­ra­to­ren wie && (Und-​Verknüpfung) und || (Oder-​Verknüpfung) könn­te sich der Quell­code ver­ein­fa­chen las­sen, oder?
3
Passe das Fluss­dia­gramm und den Quell­text ent­spre­chend Dei­ner Über­le­gun­gen aus Auf­ga­be 2 an.
x