Münzenwurfen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andre.G
User
Beiträge: 1
Registriert: Mittwoch 20. Oktober 2021, 18:11

import math
import random
Münzwurf = 0
Kopf = 0
Zahl = 0
while Münzwurf < 1000:
Score = random.randint(0,1)
if Score == 1:
Kopf = Kopf + 1
Münzwurf = Münzwurf + 1
else:
Zahl = Zahl + 1
Münzwurf = Münzwurf + 1
Kopf_percent = Kopf / 10
Zahl_percent = Zahl / 10
print("Von 1000 Münz-Würfen:\n")
print("Sie haben: " + str(Kopf) + " " + str(Kopf_percent) + "%" + " Kopf geworfen!\n")
print("Sie haben: " + str(Zahl) + " " + str(Zahl_percent) + "%" + " Zahl geworfen!\n"
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und was ist die Frage? Außerdem: Bitte Code Tags benutzen.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Einrückungen sind wichtig, damit der Compiler erkennen kann, was wo dazu gehört. Deine letzten paar Zeilen sind zu weit eingerückt. Ganz am Ende fehlt eine schließende Klammer.

math wird importiert, aber nie benutzt.
Variablennamen schreibt man grundsätzlich komplett klein.
Statt Strings mit + zusammenzustückeln benutzt man format-Strings.
Die / 10 sind magisch, weil man eigentlich durch 1000 teilen müßte, und die Prozent erst bei der Ausgabe mit 100 multipliziert.

Statt der while-Schleife würde man eine for-Schleife benutzen.

Code: Alles auswählen

import random
kopf = 0
zahl = 0
for muenzwurf in range(1000):
    score = random.randint(0,1) 
    if score == 1:
        kopf += 1
    else:
        zahl += 1
print("Von 1000 Münz-Würfen:")
print(f"Sie haben: {kopf} {kopf / 1000:.0%} Kopf geworfen!")
print(f"Sie haben: {zahl} {zahl / 1000:.0%} Zahl geworfen!")
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde da noch die Anzahl der Würfe nur *einmal* in den Quelltext schreiben, damit man überall weiss, was diese magische 1000 eigentlich bedeutet, und sie auch leicht ändern kann, ohne Gefahr zu laufen sie nicht überall und/oder nicht überall gleich zu ändern:

Code: Alles auswählen

import random

wurf_anzahl = 1000
kopf = 0
zahl = 0
for _ in range(wurf_anzahl):
    score = random.randint(0, 1)
    if score == 1:
        kopf += 1
    else:
        zahl += 1
print(f"Von {wurf_anzahl} Münz-Würfen:")
print(f"Sie haben: {kopf} {kopf / wurf_anzahl:.0%} Kopf geworfen!")
print(f"Sie haben: {zahl} {zahl / wurf_anzahl:.0%} Zahl geworfen!")
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Und nur für den Fall, dass die Frage eigentlich "Wie macht man das ohne if-Anweisung?" lauten sollte:

Code: Alles auswählen

import random

wurf_anzahl = 1000
kopf_anzahl = sum(random.randint(0, 1) for _ in range(wurf_anzahl))
zahl_anzahl = wurf_anzahl - kopf_anzahl
print(f"Von {wurf_anzahl} Münz-Würfen:")
print(f"Sie haben: {kopf_anzahl} {kopf_anzahl / wurf_anzahl:.0%} Kopf geworfen!")
print(f"Sie haben: {zahl_anzahl} {zahl_anzahl / wurf_anzahl:.0%} Zahl geworfen!")
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Und was ist die Frage?
vielleicht ist die Frage die berühmte Frage „nach dem Leben, dem Universum und dem ganzen Rest“?

Spaß ;-)
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

42
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Angeber. 😛
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten