Sie bewusst sein müssen einfach die heads
(die Variable) nicht das gleiche wie 'heads'
(die Zeichenkette) ist. In jedem Fall gibt es bessere (na ja, mehr pythonische) Wege, um eine einfache Zweier-Auswahl wie diese in Python zu machen.
Sie können nur so etwas wie die folgende Liste Verständnis verwenden:
>>> import random
>>> count = 100
>>> heads = len([1 for i in range(count) if random.randint(0,1) == 1])
>>> tails = count - heads
>>> print(heads, tails)
43 57
Der Ausdruck für heads
abgebaut werden können:
- Beginnen Sie mit einer leeren Liste und eine Schleife 100-mal ausgeführt werden.
- Für jedes Mal, wenn ein zufälliger
0/1
Wert 1
ist, fügen Sie 1 zur Liste hinzu.
- die Liste Länge am Ende Get ist es die Anzahl der Sie
Alternativ 1. gekippt, können Sie die Liste mit genau 100 zufällig 0/1
Werte füllen könnte und sie einfach zusammenfassen:
>>> heads = sum([random.randint(0,1) for i in range(100)])
Das ist einfacher als das ursprüngliche Code-Snippet, das ich zur Verfügung gestellt habe, aber es zeigt nicht die volle Leistung des Listenverständnisses, da es Transformation, Iteration und Auswahl haben kann: Der folgende Code gibt zum Beispiel die Quadrate aller positiven geraden Zahlen kleiner als oder gleich 20:
>>> [i * i for i in range(1,21) if i % 2 == 0]
[4, 16, 36, 64, 100, 144, 196, 256, 324, 400]
yeh mein Kumpel wies gerade darauf hin! ha cheers – NewUser123
Eine starke typisierte Sprache verhindert diese Art von Problemen. –