从.csv中随机挑选获胜者



我对python完全陌生。只是想知道如何从.csv文件中挑选几个,但不是相同的(按ID唯一(赢家。有人能帮忙吗?

def generate():
global filename, totalEntries, timestamp, winnerName, winnerID, winnerEmail
filename = enterFile()
now = datetime.datetime.now()
timestamp = now.strftime("%B %d, %Y %I:%M:%S %p")
with open(filename, newline="") as entriesCSV:
entriesDict = csv.reader(entriesCSV,dialect="excel")
totalEntries = len(list(entriesDict)) - 1 # ignore our header row
winningNumber = random.randint(1,totalEntries)
with open(filename, newline="") as entriesCSV:
entriesDict = csv.DictReader(entriesCSV,dialect="excel")
for row in entriesDict:
if int(row["#"]) == winningNumber:
winnerName = row["Name"]
winnerID = row["ID"]
winnerEmail = row["Email"]
print(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}")

试试这个解决方案。我删除了全局变量,因为你似乎并没有真正使用它们,然后代码生成5个唯一的随机整数,然后为每个整数打印出你的获胜行。注意,如果行"#"是一个记录编号。如果你想改变获奖者的数量,只需改变顶部的变量即可。

def generate():
filename = enterFile()
noOfWinners = 5
winningNumbers = []
while len(winningNumbers) < noOfWinners:
luckyNumber = random.randint(1, totalEntries - 1)
if luckyNumber not in winningNumbers:
winningNumbers.append(luckyNumber)
with open(filename, newline="") as entriesCSV:
entriesDict = csv.DictReader(entriesCSV,dialect="excel")
for number in winningNumbers:
for row in entriesDict:
if int(row["#"]) == number:
winnerName = row["Name"]
winnerID = row["ID"]
winnerEmail = row["Email"]
print(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}")

最新更新