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’你做了什么比我做的还要多?我不能把它说出来,但你的确实有效。我在修改的那行后面加了评论