Seite 1 von 1

Auswahl random

Verfasst: Mittwoch 16. Dezember 2020, 17:26
von Marlala
Ich habe letztens mit Phython angefangen, ich komme bei meinem Code aber nicht weiter. Das Programm soll den Benutzer fragen was er von den drei möglichkeiten machen will und dann soll die jeweilige Sequenz ausgegeben werden.



import random

print("Wilkommen zum Spiel"\n)
print("Du hast die Auswahl"\n)
print("Münzenwurf, Würfel werfen oder einer Zufallszahl(1-100)")

#Auswahl
print("Wähle nun, du hast die Aufwahl zwischen:"\n)
print("Münzenwurf [M], Würfelwurf [W], Zufallszahl [Z]"\n)



#Zufallszahl
print randint(1,100)


#Würfel
for i in range(15):
print(random.randint(1,6))

def wuerfeln():
return(random.randint(1,6))
wuerfeln()


#Münze
tipp = input("Kopf [K] oder Zahl [Z]: ")
zufallszahl = randint(0, 1)
if zufallszahl == 0:
print("Kopf")
seite = 'K'
else:
print("Zahl")
seite = 'Z'

Re: Auswahl random

Verfasst: Mittwoch 16. Dezember 2020, 19:15
von __blackjack__
@Marlala: Eine Frage wäre nett gewesen, oder bei Fehlern die komplette Fehlermeldung:

Code: Alles auswählen

  File "./forum21.py", line 4
    print("Wilkommen zum Spiel"\n)
                                 ^
SyntaxError: unexpected character after line continuation character
Du hast da anscheinend eine ziemliche Menge an Code geschrieben ohne den zu testen. Man schreibt Programme nicht erst komplett runter bevor man die das erste mal testet. Der Fehler hätte viel früher auffallen müssen. Denn im Nachfolgenden Code sind weitere Fehler.

Entwickle das Programm Schritt für Schritt und teste jeden davon. Zerlege das Problem in kleinere Teilprobleme und die wieder in kleinere Teilprobleme, solange bis die Teilprobleme in jeweils einer Funktion mit ein paar Zeilen Code lösbar sind. Schreibe diese Funktionen und teste sie. Mache erst mit der nächsten Funktion weiter wenn die vorhandenen machen was sie sollen. Das Hauptprogramm steht auch in einer Funktion, die per Konvention `main()` heisst.

Re: Auswahl random

Verfasst: Montag 21. Dezember 2020, 19:58
von Boruto_2200
@__Blackjack__ hat schon recht, du solltest deine Programme unbedingt vorher testen, sonst gibt's ein riesen Chaos... Ich habe den Code mal korrigiert:
Von

Code: Alles auswählen

import random

print("Wilkommen zum Spiel"\n)
print("Du hast die Auswahl"\n)
print("Münzenwurf, Würfel werfen oder einer Zufallszahl(1-100)")

#Auswahl
print("Wähle nun, du hast die Aufwahl zwischen:"\n)
print("Münzenwurf [M], Würfelwurf [W], Zufallszahl [Z]"\n)



#Zufallszahl
print randint(1,100)


#Würfel
for i in range(15):
print(random.randint(1,6))

def wuerfeln():
return(random.randint(1,6))
wuerfeln()


#Münze
tipp = input("Kopf [K] oder Zahl [Z]: ")
zufallszahl = randint(0, 1)
if zufallszahl == 0:
print("Kopf")
seite = 'K'
else:
print("Zahl")
seite = 'Z'
Zu

Code: Alles auswählen

from random import randint

def Muenzenwurf():
    
    tipp = input("Kopf [K] oder Zahl [Z]: ")

    zufallszahl = randint(0, 1)
    if zufallszahl == 0:
        print("Kopf")
        seite = 'K'

    else:
        print("Zahl")
        seite = 'Z'


def Wuerfelwurf():
    for counter in range(0, 15):
        print(randint(1,6))

def Zufallszahl():
    Z = randint(1, 100)
    print('Deine Zahl lautet: ' + str(Z))

print('Willkommen zum Spiel\n')
print('Du hast die Auswahl\n')
print("Münzenwurf, Würfel werfen oder einer Zufallszahl (1-100)")
print('Wähle nun, du hast die Auswahl zwischen:\n')

Auswahl = input('Münzenwurf [M], Würfelwurf [W], Zufallszahl [Z]\n').lower()

if Auswahl == 'm':
    Muenzenwurf()
    
elif Auswahl == 'w':
    Wuerfelwurf()
    
else:
    Zufallszahl()

Re: Auswahl random

Verfasst: Montag 21. Dezember 2020, 20:38
von DeaD_EyE
Die Namen der Funktionen sollten kleingeschrieben werden und Verben sein.
Kein CamelCase, trennen mit Unterstrich _.

Also:

Code: Alles auswählen

def münzeinwurf():
    ...
Für Ausländer wäre es besser keine Umlaute zu verwenden.
Englische Namen wären besser. So lernt man auch gleichzeitig noch ein bisschen Englisch beim Programmieren.

Re: Auswahl random

Verfasst: Montag 21. Dezember 2020, 20:59
von Dennis89
Hallo,

@Boruto_2200
was mir auffällt Strings formatiert man mit f-Strings, das würde dann so aussehen

Code: Alles auswählen

print(f"Deine Zahl lautet: {Z}")
Der Würfelwurf leuchtet mir nicht so ganz ein, wieso gibt der 15 Zahlen aus?

Was bewirkt bei dem Müntzenwurf die 'seite = 'K'' bzw 'seite = 'Z'' ?

In der Abfrage nach dem Input, sorgst du durch das letzte 'else' dafür, das man mit jedem Buchstaben außer 'm' und 'w' zu den Zufallszahlen gelangt.

Dann könnte man die Funktionen noch in der Hauptfunktion 'main' aufrufen.

Vielleicht etwas in diese Richtung? Müsste man noch eine Bedingung für das Beenden einbauen, jetzt läuft das Spiel durch. Ich habe deine Funktionen weitestgehend übernommen.

Code: Alles auswählen

#!usr/bin/env python3

from random import randint
from time import sleep

def muenzenwurf():
    tipp = input("Kopf [K] oder Zahl [Z]: ")

    zufallszahl = randint(0, 1)
    if zufallszahl == 0:
        print("Kopf")

    elif zufallszahl ==1:
        print("Zahl")

def wuerfelwurf():
    for counter in range(0, 15):
        print(randint(1,6))

def zufallszahl():
    Zahl = randint(1, 100)
    print(f'Deine Zahl lautet: {Zahl}')

def willkommen(choice):
    print('Du hast die Auswahl\n')
    print("Münzenwurf, Würfel werfen oder einer Zufallszahl (1-100)")
    print('Wähle nun, du hast die Auswahl zwischen:\n')

    Auswahl = input('Münzenwurf [M], Würfelwurf [W], Zufallszahl [Z]\n').lower()
    return Auswahl
    
def auswahl(Auswahl):
    if Auswahl == 'm':
        muenzenwurf()
    elif Auswahl == 'w':
        wuerfelwurf()
    elif Auswahl == 'z':
        zufallszahl()
    else:
        print('Bitte nur M, W oder Z zur Auswahl eingeben. Warten Sie für Neustart')

def main():
    print('Willkommen zum Spiel\n')
    while True:
        choice = willkommen(auswahl)
        auswahl(choice)
        sleep(2)
            
        
if __name__=='__main__':
    main()
Grüße
Dennis

Re: Auswahl random

Verfasst: Dienstag 22. Dezember 2020, 08:17
von Sirius3
@Dennis89: Variablennamen schreibt man wie Funktionsnamen komplett klein. Bei `range` ist der Startwert schon von sich aus 0, das muß man nicht angeben.
In `muenzenwurf` kann zufallszahl nur 0 oder 1 annehmen, das elif sollte also ein else sein. Bei Dir frag man sich, was denn in einem else-Block stehen müßte, weil der fehlt.
Warum hat `willkommen` einen Parameter choice, der nicht verwendet wird? Und warum rufst Du diese Funktion in `main` mit der Funktion auswahl als Parameter auf?

Re: Auswahl random

Verfasst: Dienstag 22. Dezember 2020, 09:30
von Dennis89
Guten Morgen,

die Parameter hatte ich vergessen zu entfernen :roll: Das war von einem anderen Versuch noch drin.
Den Rest habe ich auch noch angepasst.

Code: Alles auswählen

#!usr/bin/env python3

from random import randint
from time import sleep

def muenzenwurf():
    tipp = input("Kopf [K] oder Zahl [Z]: ")

    zufallszahl = randint(0, 1)
    if zufallszahl == 0:
        print("Kopf")

    else:
        print("Zahl")

def wuerfelwurf():
    for counter in range(15):
        print(randint(1,6))

def zufallszahl():
    zahl = randint(1, 100)
    print(f'Deine Zahl lautet: {zahl}')

def willkommen():
    print('Du hast die Auswahl\n')
    print("Münzenwurf, Würfel werfen oder einer Zufallszahl (1-100)")
    print('Wähle nun, du hast die Auswahl zwischen:\n')

    choice = input('Münzenwurf [M], Würfelwurf [W], Zufallszahl [Z]\n').lower()
    return choice
    
def auswahl(choice):
    if choice == 'm':
        muenzenwurf()
    elif choice == 'w':
        wuerfelwurf()
    elif choice == 'z':
        zufallszahl()
    else:
        print('Bitte nur M, W oder Z zur Auswahl eingeben. Warten Sie für Neustart')

def main():
    print('Willkommen zum Spiel\n')
    while True:
        choice = willkommen()
        auswahl(choice)
        sleep(2)
            
        
if __name__=='__main__':
    main()
Der TE könnte sich dann ja auf eine einheitliche Sprache festlegen. Das Programm sollte ja eh noch eine Bedingung zum Beenden bekommen.

Grüße
Dennis