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.
ich muss für die Uni ein Programm schreiben welches zwei Würfel simuliert, die so lange geworfen werden sollen bis sie einen Pasch erzeugt haben. Ist bis da hin auch kein Problem, nun soll ich aber am Ende des Programms ausgeben wie viele Versuche ich gebraucht habt bzw. wie oft die Schleife durchgelaufen ist. Wie das geht weiß ich leider nicht. Habe auch schon ne Weile gegoogelt, aber nix ordentliches dazu gefunden. Wäre top, wenn mir Jemand weiterhelfen könnte.
@SpyHRO65: Arbeite mal das Tutorial in der Python-Dokumentation durch, oder ein anderes geeignetes Grundlagentutorial. Für komplette Programmieranfänger wird Learn Python The Hard Way oft empfohlen.
Danach solltest Du wissen wie das geht. Im Grunde fehlt Dir nur noch die Rechenoperation ``+``, alles andere was man dazu braucht kennst Du ganz offensichtlich schon. Vielleicht noch die ``break``-Anweisung, damit man nach dem Pasch auch tatsächlich aufhören kann zu würfeln.
from itertools import imap, takewhile
from operator import ne
from random import randint
def dice_rolls():
while True:
yield randint(1, 6)
def main():
print sum(1 for _ in takewhile(bool, imap(ne, dice_rolls(), dice_rolls())))
if __name__ == '__main__':
main()
@xeike: Ein Würfel mit 256 Seiten dürfte andere Ergebnisse liefern als einer mit 6 Seiten. Und wenn es nur darum geht kein ``while`` zu verwenden, dann ersetze in meiner Lösung die `dice_rolls()`-Funktion einfach durch diese hier:
BlackJack hat geschrieben:@xeike: Ein Würfel mit 256 Seiten dürfte andere Ergebnisse liefern als einer mit 6 Seiten. Und wenn es nur darum geht kein ``while`` zu verwenden, dann ersetze in meiner Lösung die `dice_rolls()`-Funktion einfach durch diese hier:
Na, geht doch
Auf das Anpassen an das Intervall 1..6 habe ich verzichtet, das war jetzt zu billig bei der sonst schon sehr langen Lösung...
@BlackJack: jetzt seh ich Dich schon innerhalb von wenigen Tagen zum zweiten Mal die zweiparametrige Form von »iter« benutzen, die ich vorher noch nicht kannte .
Mußte ich jetzt auch gleich anwenden: