Python :: Aufgabe #86

9 Lösungen Lösungen öffentlich

Stein, Papier, Schere, Echse, Spock

Anfänger - Python von Energy - 24.09.2015 um 15:22 Uhr
Programmiere das Spiel Stein, Papier, Schere, Echse, Spock, sodass man selbst eine Figur auswählen kann und der Computer eine zufällige Figur auswählt. Ermittele dann, wer diese Partie gewonnen hat.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 28.09.2015 um 12:12 Uhr
Quellcode ausblenden Python-Code
import random

dic = {"stein" : 0, "papier" : 1, "schere" : 2, "echse" : 3, "spock" : 4}

print("\n=======---Stein, Papier, Schere, Echse, Spock---=======\n")
print("Stein schleift Schere und zerquetscht Echse.")
print("Papier bedeckt Stein und widerlegt Spock.")
print("Schere schneidet Papier und köpft Echse.")
print("Echse frisst Papier und vergiftet Spock.")
print("Spock zertrümmert Schere und verdampft Stein.\n")
print(55*"=")

while True:

    while True:
        wahl = input("Nun wähle! Aber wähle weise: ")
        wahl = wahl.lower()

        if wahl not in dic.keys():
            print("Falsche Eingabe! Nochmal!\n")

        else:
            ai = random.choice(list(dic.keys()))
            ai = ai.lower()
            break

    if wahl == ai:
        print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
        print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
        print("Unentschieden!")

    elif (
            (wahl == "stein" and (ai == "schere" or ai == "echse")) or 
            (wahl == "papier" and (ai == "stein" or ai == "spock")) or 
            (wahl == "schere" and (ai == "papier" or ai == "echse")) or 
            (wahl == "echse" and (ai == "papier" or ai == "spock")) or 
            (wahl == "spock" and (ai == "stein" or ai == "schere"))
        ):
        print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
        print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
        print("Du gewinnst!")

    else:
        print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
        print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
        print("Der Computer gewinnt!")

    again = input("\nNochmal (j/n): ")
    if again == "J" or again == "j":
        continue
    else:
        break
vote_ok
von Jan (50 Punkte) - 21.10.2015 um 07:32 Uhr
Quellcode ausblenden Python-Code
import random, time
"""
0 - rock
1 - Spock
2 - paper
3 - lizard
4 - scissors
"""
#Wandelt Nummer vom Computer in den Namen für die Ausgabe um!
def numbertoname(number):

    if number==0: name="Stein"
    elif number==1: name="Spock"
    elif number==2: name="Papier"
    elif number==3: name="Echse"
    elif number==4: name="Schere"
    return name

#Wandelt den Namen in die Nummer für die Berechung um!
def nametonumber(name):

    if name=="Stein": number=0
    elif name=="Spock": number=1
    elif name=="Papier": number=2
    elif name=="Echse": number=3
    elif name=="Schere": number=4
    return number

#Startet die Berechenung
def spiel(name):
    
#Gibt zugehörige Nummer zurück von der Auswahl des Spielers!
    SpielerNummer=nametonumber(name)

#Berechnet die Zufällige Auswahl vom Computer
    CompNummer=random.randrange(0, 5)

#Berechnet Differenz --> Wer gewinnt!
    Unterschied=(SpielerNummer-CompNummer) % 5
    if Unterschied == 0:
        Gewinner = "Unentschieden!"
    elif Unterschied == 1:
        Gewinner = "Spieler gewinnt!"
    elif Unterschied == 2:
        Gewinner = "Spieler gewinnt!"
    elif Unterschied == 3:
        Gewinner = "Computer gewinnt!"
    elif Unterschied == 4:
        Gewinner = "Computer gewinnt!"

#Wandelt Auswahl des Computers in den Namen um!
    CompName=numbertoname(CompNummer)

#Ausgabe für den Spieler
    time.sleep(0.5)
    print ("Spieler wählt: ", name)
    print ("Computer wählt: ", CompName)
    time.sleep(1)
    print (Gewinner, "\n")
    time.sleep(0.5)

#Anfangsausgabe als Erklärung    
print ("Wilkommen zu Stein-Schere-Papier-Echse-Spock\n\n")

#Spielerklärung
print ("Kurze Erklärung, wie das Spiel funktioniert:\n ")
print ("Schere schneidet Papier")         
print ("Papier bedeckt Stein")              
print ("Stein zerquetscht Echse")
print ("Echse vergiftet Spock")
print ("Spock zertrümmert Schere")
print ("Schere köpft Echse")
print ("Echse frisst Papier")
print ("Papier widerlegt Spock")
print ("Spock verdampft Stein")
print ("Stein schleift Schere\n")
print ("Bitte wählen Sie einen der Namen aus:\n")
print ("0 - Stein")
print ("1 - Spock")
print ("2 - Papier")
print ("3 - Lizard")
print ("4 - Schere\n")
 
while True:

#Aufforderung an den Spieler eine Zahl einzugeben!
    decision = int(input("Bitte geben Sie die Nummer ein: "))
   
#Beendet den Vorgang bei falscher Zahl!
    if (decision > 4 ) or (decision < 0):
        print ("Error: It has to be a number between 0 and 4")
        break
   
#Wandelt die Zahl in den Namen um und startet die Berechnung!
    name = numbertoname(decision)
    spiel(name)
vote_ok
von saylin (130 Punkte) - 08.11.2015 um 16:55 Uhr
Quellcode ausblenden Python-Code
import random
figuren = ["Stein","Schere","Papier","Echse","Spock"]
print("Williommen bei Stein, Schere, Papier, Echse, Spock!")
run = True
while run :
     n = input("figur wählen nummer eingeben: \n 1)Stein 2)Schere 3)Papier 4)Echse 5)Spock \n")
     player = figuren[int(n)-1]
     Gegner = random.choice(figuren)
     print("Ich: ",player)
     print("Gegner: ",Gegner)
     if player == Gegner :
          print("unentschieden")          
     elif player == "Stein" :
         if Gegner == "Schere" or Gegner == "Echse" :
              print("Gewonnen!!!")            
         else :
               print ("verloren :( ") 
     elif player == "Schere" :
         if Gegner == "Papier" or Gegner == "Echse" :
              print("Gewonnen!!!")            
         else :
               print ("verloren :( ")      
     elif player == "Papier" :
         if Gegner == "Stein" or Gegner == "Spock" :
              print("Gewonnen!!!")            
         else :
               print ("verloren :( ")     
     elif player == "Echse" :
         if Gegner == "Spock" or Gegner == "Papier" :
              print("Gewonnen!!!")            
         else :
               print ("verloren :( ")      
     elif player == "Spock" :
         if Gegner == "Stein" or Gegner == "Schere" :
              print("Gewonnen!!!")            
         else :
               print ("verloren :( ")               
     ende = input("nochmal? j/n")     
     if ende == "n" :
          run = False 
vote_ok
von Dorn2504 (20 Punkte) - 09.11.2015 um 16:24 Uhr
Quellcode ausblenden Python-Code
import random
random.seed()
computerwahl = random.randint(0, 4)

tie = "Unentschieden!"
viktory = "Sie haben Gewonnen!"
lose = "Sie haben Verloren!"
playerwahl = input("Stein:1, Papier:2, Schere:3, Echse:4 oder Spock:5? ")

def player(playerwahl, computerwahl):
    if playerwahl == 1:
        player_stein(computerwahl)
    elif playerwahl == 2:
        player_papier(computerwahl)
    elif playerwahl == 3:
        player_schere(computerwahl)
    elif playerwahl == 4:
        player_echse(computerwahl)
    elif playerwahl == 5:
        player_spook(computerwahl)
    else:
        print "Falsche Eingabe! "

def player_stein(computerwahl):
    if computerwahl == 0:
        print tie
    elif computerwahl == 1:
        print lose
    elif computerwahl == 2:
        print viktory
    elif computerwahl == 3:
        print vikory
    elif computerwahl == 4:
        print lose
    else:
        print "Falsche Eingabe!"
def player_schere(computerwahl):
    if computerwahl == 0:
        print lose
    elif computerwahl == 1: 
        print viktory
    elif computerwahl == 2: 
        print tie
    elif computerwahl == 3:
        print viktory
    elif computerwahl == 4:
        print lose
    else:
        print "Falsche Eingabe!"
def player_papier(computerwahl):
    if computerwahl == 0:
        print viktory
    elif computerwahl == 1: 
        print tie
    elif computerwahl == 2: 
        print lose
    elif computerwahl == 3: 
        print lose
    elif computerwahl == 4:
        print viktory
    else:
        print "Falsche Eingabe!"
def player_echse(computerwahl):
    if computerwahl == 0: 
        print lose
    elif computerwahl == 1: 
        print viktory
    elif computerwahl == 2: 
        print lose
    elif computerwahl == 3: 
        print tie
    elif computerwahl == 4: 
        print viktory
    else:
        print "Falsche Eingabe!"
def player_spook(computerwahl):
    if computerwahl == 0: 
        print viktory
    elif computerwahl == 1: 
        print lose
    elif computerwahl == 2: 
        print viktory
    elif computerwahl == 3: 
        print lose
    elif computerwahl == 4: 
        print tie
    else:
        print "Falsche Eingabe!"



if computerwahl == 0: 
    playerwahl
    print "Gegner wählt", computerwahl +1
    player(playerwahl, computerwahl)
elif computerwahl == 1: 
    playerwahl
    print "Gegner wählt", computerwahl +1
    player(playerwahl, computerwahl)
elif computerwahl == 2: 
    playerwahl
    print "Gegner wählt", computerwahl +1
    player(playerwahl, computerwahl)
elif computerwahl == 3: 
    playerwahl
    print "Gegner wählt", computerwahl +1
    player(playerwahl, computerwahl)
elif computerwahl == 4: 
    playerwahl
    print "Gegner wählt", computerwahl +1
    player(playerwahl, computerwahl)
else:
    print("error")

vote_ok
von chrigu78 (80 Punkte) - 02.03.2016 um 17:03 Uhr
Quellcode ausblenden Python-Code
import random
print 'Stein, Schere, Papier'
print '---------------------'
print 'Stein: Schleift Schere, zerquetscht Echse'
print 'Schere: Schneidet Papier, köpft Echse'
print 'Papier: Bedeckt Stein, widerlegt Spock'
print 'Spock:  Zertrümmert Schere, verdampft Stein'
print 'Echse: Frisst Papier, vergiftet Spock'
print '\nDu kannst zwischen Stein, Schere, Papier, Echse und Spock wählen.'
while True:
    a = raw_input('Waehle Deine Figur: ')
    a = a.lower()
    c = random.randint(0,4)
    #d = ''
    #e = ''
    if c == 0:
        d = 'Stein'
    if c == 1:
        d = 'Schere'
    if c == 2:
        d = 'Papier'
    if c == 3:
        d = 'Spock'
    if c == 4:
        d = 'Echse'
    if a == 'stein':
        if c == 1 or c == 4:
            e = 'gewonnen'
        elif c == 0:
            e = 'unentschieden'
        else:
            e = 'verloren'
    if a == 'schere':
        if c == 2 or c == 4:
            e = 'gewonnen'
        elif c == 1:
            e = 'unentschieden'
        else:
            e = 'verloren'
    if a == 'papier':
        if c == 0 or c == 3:
            e = 'gewonnen'
        elif c == 2:
            e = 'unentschieden'
        else:
            e = 'verloren'
    if a == 'spock':
        if c == 0 or c == 1:
            e = 'gewonnen'
        elif c == 3:
            e = 'unentschieden'
        else:
            e = 'verloren'
    if a == 'echse':
        if c == 2 or c == 3:
            e = 'gewonnen'
        elif c == 4:
            e = 'unentschieden'
        else:
            e = 'verloren'
    a = a.capitalize()
    #print '\tDeine Figur: %r' % (a)
    print 'Dein Gegner: ', d
    print 'Dein Ergebnis: ', e, '!'
    f = raw_input('Noch eine Runde? (j/n)> ')
    if f == 'j':
        continue
    if f == 'n':
        print 'Spiel beendet!'
        break
    else:
        f = raw_input('Eingabe nicht verstanden. Bitte (j/n) eingeben> ')
vote_ok
von BlueBite (100 Punkte) - 02.03.2016 um 22:11 Uhr
Quellcode ausblenden Python-Code
# Bei der Eingabe gibt es keine Fehlerkontrolle - aber das kann ja der nächste
# Programmierer optimieren ;)
eingabe = raw_input("Stein, Papier, Schere, Echse, Spock - Wähle weise!: ")

eingabe = eingabe.lower()

# Folgende Listen können miteinander addiert werden und die Gewinner lassen sich 
# daraus ableiten
stein = [0, -1, 1, 1, -1, "Stein", "stein"]
papier = [1, 0, -1, -1, 1, "Papier", "papier"]
schere = [-1, 1, 0, 1, -1, "Schere", "schere"]
echse = [-1, 1, -1, 0, 1, "Echse", "echse"]
spock = [1, -1, 1, -1, 0, "Spock", "spock"]

auswahl = [stein, papier, schere, echse, spock]
counter = 0

# Die Eingabe des Users wird verglichen mit den Listen und die korrekte Liste
# wird dem User zugeordnet (in der Variable a)
for i in auswahl:
    if eingabe == i[6]:
        a = auswahl[counter]
    else:
        counter += 1

# Der Computer wöhlt per Zufall eine Zahl zwischen 0 und 4 und diese 
# Liste wird dem Computer zugeordnet (Variable b)
computerchoice = int(random()*100/20)

b = auswahl[computerchoice]

# Es werden nun die Listen aufsummiert und gesehen, wer gewonnen hat
for i in range(5):
    if a[i]+b[i] == 1 and a[i] == 1:
        print "Du hast mit %s gegen den Computer mit %s gewonnen!" % (a[5], b[5])
        break
    elif a[i]+b[i] == 1 and b[i] == 1:
        print "Der Computer hat mit %s gegen dich und deinem Zeichen %s gewonnen :-(" % (b[5], a[5])
        break
    elif i == 4:
        print "Ihr habt beide das gleiche Zeichen gewählt, nämlich %s" % a[5]
        break

vote_ok
von Nachbar (2820 Punkte) - 17.06.2016 um 14:02 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-
# Python2.7
import random

figur_liste = {1:"Schere",  2:"Papier", 3: "Stein", 4:"Echse", 5:"Spock"}
win = "DU HAST GEWONNEN!"
loose = "DU HAST VERLOREN!"

while True:
    
    print "*****************"
    print "REGELN:"
    print "Schere schneidet Papier und köpft Echse"
    print "Papier bedeckt Stein und widerlegt Spock"
    print "Stein zerquetscht Echse und zerschmettert Schere"
    print "Echse vergiftet Spock und frisst Papier"
    print "Spock zertruemmert Schere und verdampft Stein"
    print "***************** \n"

	
    print "1: Schere   2: Papier   3: Stein   4: Echse   5: Spock \n"
	
    d = int(input("Deine Wahl(1-5): "))

    print "-> ", figur_liste[d]
	
    print "Computer wählt:"
    e = random.randrange(1, 6)
        
    print "-> ", figur_liste[e], "\n"
	
    #Schere
    if d == 1 and (e == 2 or e == 4):
       print win
    elif (d == 2 or d == 4) and e == 1:
       print loose
    #Papier	
    elif d == 2 and (e == 3 or e == 5):
       print win
    elif (d == 3 or d == 5) and e == 2:
       print loose
   #Stein	
    elif d == 3 and (e == 4 or e == 1):
       print win
    elif (d == 4 or d == 1) and e == 3:
       print loose	
    #Echse	
    elif d == 4 and (e == 5 or e == 2):
       print win
    elif (d == 5 or d == 2) and e == 4:
       print loose	
    #Spock	
    elif d == 5 and (e == 1 or e == 3):
       print win
    elif (d == 1 or d == 3) and e == 5:
       print loose
    else:	print "GLEICHSTAND!"	

    print "\n"
	
    nchml = raw_input('Nochmal? [ j / n]: ')
	
    if nchml == "n":
       break
	
    print "\n"
vote_ok
von Y0uLyric (500 Punkte) - 15.12.2016 um 17:50 Uhr
Quellcode ausblenden Python-Code
import random

def regeln():

    print("Die Regeln lauten: \n Schere schneidet Papier \n Papier bedeckt Stein \n Stein zerquetscht Echse \n Echse vergiftet Spock \n Spock zertrümmert Schere \n Schere köpft Echse \n Echse frisst Papier \n Papier widerlegt Spock \n Spock verdampft Stein \n Stein zertrümmert Schere")

def eingabe():

    global benutzer_auswahl
    global möglichkeiten
    möglichkeiten = ["Stein", "Papier", "Schere", "Echse", "Spock"]

    t = 0
    while t == 0:
        benutzer_auswahl = input("Was wählen Sie?: (Stein/Papier/Schere/Echse/Spock)  ")
        if benutzer_auswahl not in möglichkeiten:
            print("Nur (Stein/Papier/Schere/Echse/Spock) möglich!!!")
        else:
            t = 1

def kampf(benutzer_auswahl, möglichkeiten):

    global computer_auswahl
    global nachricht
    sieg = "Sie haben gewonnen!!! :D"
    verloren = "Sie haben leider verloren :("
    computer_auswahl = random.choice(möglichkeiten)

    print("Sie haben " + benutzer_auswahl + " gewählt. \nDer Computer hat " + computer_auswahl + " gewählt.")
    if benutzer_auswahl == "Schere":
        if computer_auswahl == "Papier" or computer_auswahl == "Echse":
            nachricht = sieg
        else:
            nachricht = verloren
    elif benutzer_auswahl == "Papier":
        if computer_auswahl == "Stein" or computer_auswahl == "Spock":
            nachricht = sieg
        else:
            nachricht = verloren
    elif benutzer_auswahl == "Stein":
        if computer_auswahl == "Echse" or computer_auswahl == "Schere":
            nachricht = sieg
        else:
            nachricht = verloren
    elif benutzer_auswahl == "Spock":
        if computer_auswahl == "Schere" or computer_auswahl == "Stein":
            nachricht = sieg
        else:
            nachricht = verloren
    elif benutzer_auswahl == "Echse":
        if computer_auswahl == "Spock" or computer_auswahl == "Papier":
            nachricht = sieg
        else:
            nachricht = verloren

def ausgabe(nachricht):

    print(nachricht)

regeln()
eingabe()
kampf(benutzer_auswahl, möglichkeiten)
ausgabe(nachricht)

vote_ok
von 0 (0 Punkte) - 02.10.2017 um 22:50 Uhr
Quellcode ausblenden Python-Code
#Stein Papier Schere Echse Spock
from random import choice
from tkinter import *

class Spiel(object):
    wahl=['Stein','Papier','Schere','Echse','Spock']
    def __init__(self):
        self.f=Tk()
        self.f.title("Stein Papier Schere :-P")
        self.ich=StringVar()
        self.cpu=StringVar()
        self.point=StringVar()
        self.layout()
        self.f.mainloop()
        
    def layout(self):
        self.knoepfe=Frame(self.f)
        self.knoepfe.pack(side=LEFT)
        for w in Spiel.wahl:
            Radiobutton(self.knoepfe,text=w,value=w,variable=self.ich,anchor=W).pack()
        Button(self.knoepfe,text="Start",command=self.start,anchor=W).pack()
        Button(self.knoepfe,text="Neu",command=self.neu,anchor=W).pack()
        
        self.ausgabe=Frame(self.f)
        self.ausgabe.pack(side=LEFT)
        Label(self.ausgabe,textvariable=self.point,anchor=E).pack()
        Label(self.ausgabe,text="Meine Wahl:",anchor=W).pack()
        Label(self.ausgabe,textvariable=self.ich,anchor=W).pack()
        Label(self.ausgabe,text="gegenerische Wahl:",anchor=W).pack()
        Label(self.ausgabe,textvariable=self.cpu,anchor=W).pack()
        self.anzeige=Label(self.f,text=" ",width=10)
        self.anzeige.pack(side=BOTTOM)
    def start(self):
        self.cpu.set(choice(Spiel.wahl))
        
        if self.point.get():
            p=int(self.point.get())
        else:
            p=0
        if self.ich.get()==self.cpu.get():
            self.anzeige.config(text="Unentschieden")
        elif self.check():
            p+=1
            self.point.set(str(p))
            self.anzeige.config(text="Gewonnen")
        else:
            p-=1
            self.point.set(str(p))
            self.anzeige.config(text="Verloren")
            
    def check(self):
        i=self.ich.get()
        c=self.cpu.get()
        if i=="Schere" and c=="Papier":
            return True
        elif i=="Papier" and c=="Stein":
            return True
        elif i=="Stein" and c=="Echse":
            return True
        elif i=="Echse" and c=="Spock":
            return True
        elif i=="Spock" and c=="Schere":
            return True
        elif i=="Schere" and c=="Echse":
            return True
        elif i=="Echse" and c=="Papier":
            return True
        elif i=="Papier" and c=="Spock":
            return True
        elif i=="Spock" and c=="Stein":
            return True
        elif i=="Stein" and c=="Schere":
            return True
        else:
            return False
    def neu(self):
        self.point.set(str(0))
x=Spiel()
2092481

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.