2016-05-07 7 views
0

Ich möchte eine Zufallszahl von 1 bis 10 drucken, aber ich möchte 3 oder 4.Wie drucke ich eine Zufallszahl aus einer Menge, außer aus einer oder zwei Zahlen?

Ich weiß nicht beinhalten, dass ich

brauchen
print randint(1,11) 

eine Zufallszahl zu drucken, aber wie Ich stelle sicher, dass 3 oder 4 nicht generiert werden?

+2

Try [** 'random.choice' **] (https://docs.python.org/2/library/random.html#random.choice)' ({ 1, 2, 5, 6, 7, 8, 9, 10}) ' –

Antwort

2

Eine von vielen Möglichkeiten ist mit random.choice(), die ein zufälliges Element aus der nicht-leere Sequenz zurückgibt:

>>> import random 
>>> a = range(1,11) 
>>> a.remove(3) 
>>> a.remove(4) 
>>> a 
[1, 2, 5, 6, 7, 8, 9, 10] 
>>> random.choice(a) 
2 
0

Es gibt wahrscheinlich einen mehr pythischen Weg, dies zu tun, aber hier ist meine Lösung!

import random 

def printSet(min, max, *excepting): 
    r = random.randint(min, max) 
    while True: 
     if r not in excepting: 
      return r 
     r = random.randint(min, max) 

print printSet(0, 100, 5, 25, 6, 2, 1) 
1

Hier können Sie zeigen deutlich auf, und bearbeiten sie einfach, was Sie nicht tun in Ihrem Set wollen:

a = random.choice(list(set(range(1, 11)) - {3, 4})) 
Verwandte Themen