Python 简单抽奖:在1到49之间生成新的六个唯一随机数 如果有五个“短号码”或所有六个都是“短号码”(短号码为1=25表示彩票中的i)==真)或(全部(i=25,彩票中的i)>=5)或(金额(i=5): abc=彩票六 返回abc 打印(generateLottery(彩票六合彩)())

Python 简单抽奖:在1到49之间生成新的六个唯一随机数 如果有五个“短号码”或所有六个都是“短号码”(短号码为1=25表示彩票中的i)==真)或(全部(i=25,彩票中的i)>=5)或(金额(i=5): abc=彩票六 返回abc 打印(generateLottery(彩票六合彩)()),python,random,integer,Python,Random,Integer,然而,这是行不通的。为什么?我怎样才能修好它 随机导入 import random def lottery_six(): setOfSix = set() while len(setOfSix) < 6: setOfSix.add(random.randint(1,49)) lottery = list(setOfSix) return lottery def generateLottery(lottery): abc = set

然而,这是行不通的。为什么?我怎样才能修好它

随机导入
import random

def lottery_six():
    setOfSix = set()
    while len(setOfSix) < 6:
        setOfSix.add(random.randint(1,49))
    lottery = list(setOfSix)
    return lottery

def generateLottery(lottery):
    abc = set(lottery) #Modified this Line
    while (all(i >= 25 for i in lottery) == True) or (all(i < 25 for i in lottery) == True) or (sum(i >= 25 for i in lottery) >= 5) or (sum(i < 25 for i in lottery) >= 5):
        abc = lottery_six()
    return abc

print(generateLottery(lottery_six()))
def_six(): setOfSix=set() 而len(setOfSix)<6: setOfSix.add(random.randint(1,49)) 彩票=列表(setOfSix) 回程彩票 def generateLottery(彩票): abc=设置(彩票)#修改了此行 而(all(i>=25表示彩票中的i)==True)或(all(i<25表示彩票中的i)==True)或(sum(i>=25表示彩票中的i)>=5)或(sum(i<25表示彩票中的i)>=5): abc=彩票六 返回abc 打印(generateLottery(彩票六合彩)())
随机导入
def_six():
setOfSix=set()
而len(setOfSix)<6:
setOfSix.add(random.randint(1,49))
彩票=列表(setOfSix)
回程彩票
def generateLottery(彩票):
abc=设置(彩票)#修改了此行
而(all(i>=25表示彩票中的i)==True)或(all(i<25表示彩票中的i)==True)或(sum(i>=25表示彩票中的i)>=5)或(sum(i<25表示彩票中的i)>=5):
abc=彩票六
返回abc
打印(generateLottery(彩票六合彩)())

考虑到这一点,我们将重复此代码,直到找到一组合适的值。首先,我们将取范围[1,49],然后随机排序,取前6个值。然后我们检查范围是否满足前两个要求中的任何一个。如果它真的发生了,我们就打破循环,保留这个值列表

while True:
    x = (np.random.permutation(49)+1)[0:6]
    if len([i for i in x if 1<=i<25]) > 4: break
    if len([i for i in x if 25<=i<=49]) > 4: break

print(x)
为True时:
x=(np.随机排列(49)+1)[0:6]

如果len([i代表i in x,如果1考虑到这一点,我们将重复此代码,直到找到一组合适的值。首先,我们将取范围[1,49],然后随机排序,取前6个值。然后,我们检查范围是否满足前2个要求中的任何一个。如果满足,我们将打破循环,并保留此值列表

while True:
    x = (np.random.permutation(49)+1)[0:6]
    if len([i for i in x if 1<=i<25]) > 4: break
    if len([i for i in x if 25<=i<=49]) > 4: break

print(x)
为True时:
x=(np.随机排列(49)+1)[0:6]

如果len([i for i in x if 1您的代码似乎没有进入循环,您可以在while循环之前生成一个集合。此外,这些行似乎是多余的:

(all(i>=25表示彩票中的i)==True)或(all(i<25表示彩票中的i)==True)

最终代码:

def generateLottery(lottery):
    lottery = lottery_six()
    while sum(i >= 25 for i in lottery) >= 5 or sum(i < 25 for i in lottery) >= 5:
        lottery = lottery_six()
    return lottery

print(generateLottery(lottery_six()))
def生成模式(抽签):
彩票
而sum(i>=25表示彩票中的i)>=5或sum(i<25表示彩票中的i)>=5:
彩票
回程彩票
打印(generateLottery(彩票六合彩)())

您的代码似乎没有进入循环,您可以在while循环之前生成一个集合。此外,这些行似乎是多余的:

(all(i>=25表示彩票中的i)==True)或(all(i<25表示彩票中的i)==True)

最终代码:

def generateLottery(lottery):
    lottery = lottery_six()
    while sum(i >= 25 for i in lottery) >= 5 or sum(i < 25 for i in lottery) >= 5:
        lottery = lottery_six()
    return lottery

print(generateLottery(lottery_six()))
def生成模式(抽签):
彩票
而sum(i>=25表示彩票中的i)>=5或sum(i<25表示彩票中的i)>=5:
彩票
回程彩票
打印(generateLottery(彩票六合彩)())

如果这些条件中的任何一个是真的,那么您就赢了?您使用了一个集合,您是否假设相同的值不能重复?例如像[1,1,1,1,1,1]这样的列表不允许?列表必须是唯一的值?是的,数字必须是唯一的。不,它只是生成一个满足上述要求的集合。上面的1,因为条件1和2是互斥的,对吗?所以如果这些条件中的任何一个是真的,您就赢了?您使用集合,您是否假设相同的值不能被互斥ted?这样的列表就像[1,1,1,1,1,1]不允许?列表必须是唯一的值?是的,数字必须是唯一的。不,它只是生成一个满足上述要求的集合。上面的第一个,因为条件1和条件2是互斥的,对吗?除了我之外,你还做了什么?我无法解释它,但你的确实起作用。我在我写的行后添加了注释odifiedWhat’你做了什么比我做的还要多?我不能把它说出来,但你的确实有效。我在修改的那行后面加了评论