[英]Unwanted random iterator in For-Loop
我試圖創建一個函數來生成兩個其他值(startFrom和stopAt)之間的值集(numberToChoose),但由於某種原因,第二個for循環(第7行)中的迭代器(?),在這種情況下似乎似乎即使我沒有看到任何理由,也要隨機生成。
def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):
numbers = [(randrange(startFrom, stopAt))] # initialize empty list of numbers
for n in range(numbersToChoose-1): # choose random number from 1 to 49 a total of 7 times
x = randrange(startFrom, stopAt+1)
for a in numbers: # check for already existing elements in "numbers"
if x == numbers[a]: # if new random number already exists in "numbers" discard and run loop again
n -= 1 # decreases n by 1 so a new (hopefully not already existing) number can be generated
else: # generated numbers does not exist in "numbers" yet
numbers.append(x) # appends randomly chosen number to list "numbers"
return numbers # returns said list "numbers"
任何關於如何處理這個問題的建議都非常感謝。 如果可能的話,請告訴我代碼中的任何其他內容(剛剛啟動python)。
您檢查生成的數字是否已在列表中的代碼是錯誤的。 for a in numbers
,在此循環中,您使用numbers[a]
而a
是列表的成員但不是成員的索引。 使用in
測試一個數字是否在名單:
來自隨機進口randrange
def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):
numbers = []
for n in range(numbersToChoose):
x = randrange(startFrom, stopAt+1)
if not x in numbers:
numbers.append(x)
else:
n -= 1
return numbers
或者干脆:
from random import sample
def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):
return sample(range(startFrom,stopAt+1),numbersToChoose)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.