繁体   English   中英

Python随机匹配

[英]Python Random Match

如何修改我的代码并添加,以便它同时显示获胜者的姓名和中奖号码? 因此,假设威廉的随机数7与获胜数字7相匹配。然后我要打印出来“威廉是获胜者,获胜数字为7!”。 另一方面,如果中奖号码是5,而没有人匹配号码,我希望它打印出“没有中奖者”。 提前致谢!

import random
from random import sample
character_count = 5

names = ['John', 'William', 'James', 'George', 'Charles', 'Frank', 'Joseph', 'Henry', 'Robert', 'Thomas', 'Edward',
'Harry', 'Walter', 'Arthur', 'Fred', 'Albert', 'Samuel', 'Clarence', 'Louis', 'David', 'Mary', 'Anna', 'Emma', 'Elizabeth',
'Margaret', 'Minnie', 'Ida', 'Bertha', 'Clara', 'Alice', 'Annie', 'Florence', 'Bessie', 'Grace', 'Ethel', 'Sarah',
'Ella', 'Martha', 'Nellie', 'Mabel']

generate_random_names = (sample(names, k=character_count))

random_number = random.sample(range(1,10), (5))
winning_number = random.sample(range(1,10), (1))

character_status = list(zip(generate_random_names, random_number))

char_one_info = (character_status[0])
char_two_info = (character_status[1])
char_three_info = (character_status[2])
char_four_info = (character_status[3])
char_five_info = (character_status[4])

while True:
    winning_number == char_one_info[1] or winning_number == char_two_info[1] or winning_number == char_three_info[1] or winning_number == char_four_info[1] or winning_number == char_five_info[1]
    print (True)

稍微编辑一下代码,使其更具可读性和简化的导入。

import random
character_count = 5

names = ['John', 'William', 'James', 'George', 'Charles', 'Frank', 'Joseph', 'Henry', 'Robert', 'Thomas', 'Edward’, 'Harry', 'Walter', 'Arthur', 'Fred', 'Albert', 'Samuel', 'Clarence', 'Louis', 'David', 'Mary', 'Anna', 'Emma', 'Elizabeth’, 'Margaret', 'Minnie', 'Ida', 'Bertha', 'Clara', 'Alice', 'Annie', 'Florence', 'Bessie', 'Grace', 'Ethel', 'Sarah’, 'Ella', 'Martha', 'Nellie', 'Mabel']

generate_random_names = random.sample(names, k=character_count)

random_numbers = random.sample(range(1,10), 5)
winning_number = random.randint(1, 10)

character_status = list(zip(generate_random_names, random_numbers))
if winning_number in random_numbers:
    winner = [c for c in character_status if c[1] == winning_number][0]
    print(f"{winner[0]} is the winner and the winner had {winner[1]}!")
else:
    print("Nobody won")

请注意,如果您运行的是<3.6,则将print(f"{winner[0]} is the winner and the winner had {winner[1]}!”)改为print(“{name} is the winner and the winner had {num}!”.format(name=winner[0], num=winner[1])

我不确定循环是否应该一直持续到找到赢家为止,所以我将其删除。 我正在使用dict来存储数字和名称之间的映射,这样我可以很容易地查找是否有人中了(彩票?)。 您没有指定python版本,但是下面的代码适用于2.7。

import random
character_count = 5

names = ['John', 'William', 'James', 'George', 'Charles', 'Frank', 'Joseph',
         'Henry', 'Robert', 'Thomas', 'Edward', 'Harry', 'Walter', 'Arthur',
         'Fred', 'Albert', 'Samuel', 'Clarence', 'Louis', 'David', 'Mary',
         'Anna', 'Emma', 'Elizabeth', 'Margaret', 'Minnie', 'Ida', 'Bertha',
         'Clara', 'Alice', 'Annie', 'Florence', 'Bessie', 'Grace', 'Ethel',
         'Sarah', 'Ella', 'Martha', 'Nellie',
         'Mabel']

generate_random_names = (random.sample(names, k=character_count))
random_number = random.sample(range(1, 10), 5)
character_status = list(zip(random_number, generate_random_names))
char_info = dict([character_status[i] for i in range(5)])

# You can just use randint here
winning_number = random.randint(1, 10)

while True:
    if winning_number in char_info:
        name = char_info[winning_number]
        print "{0} is the winner and the winning number was {1}!"\
            .format(name, winning_number)
    else:
        print "There is no winner"

    break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM