2016-06-05 8 views
1

Wie kann ich sicherstellen, dass der zurückgegebene Wert jedes Mal in Python eindeutig ist? Ich verwende random.randrange wie so -Python Randrange Duplikate Auswahl

batter = ("Sammy Slammer","Lonnie Longball","Billy Bomber","Jack Runs","Ricky Redic",) 
bnum = random.randrange(0,5) 
upnow = batter[bnum] 

Welche funktioniert, außer ich Duplikate oft bekommen ..

versuchten dieses dank @Fabricator -

batter = ("Sammy Slammer","Lonnie Longball","Billy Bomber","Jack Runs","Ricky Redic",) 
bnum = random.randrange(0,5) 
upnow = batter[bnum] 
l = list(batter) 
random.shuffle(l) 
for upnow in l: 
print upnow 

Und -

batter = ("Sammy Slammer","Lonnie Longball","Billy Bomber","Jack Runs","Ricky Redic",) 
l = list(batter) 
random.shuffle(l) 
for upnow in l: 
print upnow 

Der Fehler im Verweis auf meine sqlite 3-Anweisung -

"für i in umgekehrt (xrange) 1, len (x) int hat keine len()"

ich den Code bis verkürzt, arbeitet die sqlite3 ohne Shuffle fein ..

bbatter_ai = (brow["BATTER"]) 
tab = cab_ai + at_bat 
conn.execute("UPDATE batter set AB = ? WHERE BATTER = ?",[tab] + [bbatter_ai]) 

Antwort

2

Sie können die Liste der Spieler mischen:

l = list(batter) 
random.shuffle(l) 
for upnow in l: 
    print upnow 

IDLE:

In [1]: import random 

In [2]: batter = ("Sammy Slammer","Lonnie Longball","Billy Bomber","Jack Runs","Ricky Redic",) 

In [3]: l = list(batter) 

In [4]: random.shuffle(l) 

In [5]: for upnow in l: 
    ...:  print upnow 
    ...:  
Jack Runs 
Sammy Slammer 
Lonnie Longball 
Billy Bomber 
Ricky Redic 
+0

Vielen Dank für die schnelle Antwort, dies wirft den Fehler "für i in umgekehrter (xrange) 1, len (x) int hat keine len()" –

+0

@RyanD, bitte posten Sie Ihren neuen Code. es scheint zu meiner Antwort in keinem Zusammenhang zu stehen – Fabricator

+0

@RyanD, gerade meine IDLE-Sitzung gepostet, kann ich nicht reproduzieren Ihren Fehler – Fabricator

Verwandte Themen