Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python def getLotteryGame():赢得';t返回(True)_Python - Fatal编程技术网

Python def getLotteryGame():赢得';t返回(True)

Python def getLotteryGame():赢得';t返回(True),python,Python,在my def getLotteryGame()中:假设检查计时器是否已用完,如果已用完,则对玩家进行排序、排名、给他们奖金并为他们存储一张便条,然后返回True,当返回True时,机器人将重新加载游戏,进行新一轮。我尝试了几种方法,试图让它回归真实。代码如下: def getLotteryGame(): global pot global players different = float(time.time() - lotteryStart) years =

在my def getLotteryGame()中:假设检查计时器是否已用完,如果已用完,则对玩家进行排序、排名、给他们奖金并为他们存储一张便条,然后返回True,当返回True时,机器人将重新加载游戏,进行新一轮。我尝试了几种方法,试图让它回归真实。代码如下:

def getLotteryGame():
    global pot
    global players
    different = float(time.time() - lotteryStart)
    years = int(different / Point.YEAR)
    days = int((different % Point.YEAR) / Point.DAY)
    hours = int((different % Point.DAY) / Point.HOUR)
    mins = int((different % Point.HOUR) / Point.MINUTE)
    secs = int(different % Point.MINUTE)
    if secs <= 0:
        if len(players) > 0:
            random.shuffle(players)
            ratios = []
            for i in range(-2, len(players) - 2) if i > 0 else range(len(players)):
                if i < 0:
                    ratios.append(1 - (i * 0.33)) # ratio > 1
                else:
                    ratios.append(1 / (1 + (i * 0.33))) # ratio <= 1
                    winnings = [pot * r for r in ratios]
                for m in range(1, len(players)):
                    notes.store("~lottery~", players[m], "The system has placed you "+Point.ordinal(m)+" in the lottery. The lottery awarded you "+winnings+" P$", time.time())
                    alerts.append(players[m])
                    winnings = int(winnings)
                    point = Point.dPoint[players[m]]
                    point = int(point)
                    point = int(point+winnings)
                    Point.dPoint[players[m]] = int(point)
            return(True)
        elif len(players) == 0:
            return(True)
    else:
         return(False)
def getLotteryGame():
全球大麻
全球玩家
different=float(time.time()-lotteryStart)
年份=整数(不同/点年)
天数=整数((不同的%Point.YEAR)/Point.DAY)
小时=整数((不同的%点.天)/点.小时)
分钟=整数((不同的%点小时)/点分钟)
秒=整数(不同的%分)
如果第0秒:
随机。洗牌(玩家)
比率=[]
对于范围内的i(-2,len(玩家)-2),如果i>0,则其他范围(len(玩家)):
如果i<0:
比率。附加(1-(i*0.33))#比率>1
其他:
比率。附加(1/(1+(i*0.33))#比率

也许lotteryStart是一个全局变量,而且它没有在任何地方定义?

您的代码逻辑是brokem
lotteryStart
在代码首次运行时定义为
time.time()
。稍后,您将找到自
lotteryStart
以来的秒数。这个秒数,有时可能是零,并且永远不会小于零。因为时间是向前的,所以它应该总是积极的。因此,您的代码总是执行返回False的最后一个
else
语句。

您应该解释您试图对该函数执行的操作!顺便说一句,您可以编写不带括号的返回语句:
returntrue
在返回值之前尝试打印
secs
len(players)
的值。啊,好的。抱歉,我忘了XD。理解代码缩进很复杂,可能是您可以尝试改进格式,这将帮助您了解其背后的逻辑。它是一个高于类点的变量:我真的不知道,它看起来更有希望,但如果不知道要做什么,很难说。在某个地方,你需要决定从彩票开始到结束应该等待多长时间。我建议放弃所有与小时/天/分钟等有关的事情,只处理秒。一旦你让它工作任意秒数,如果你觉得有必要的话,你可以在你的代码中引入分钟/小时。就我个人而言,我会在任何地方都以秒为单位,只有当我需要向用户显示时间时,才会将这些秒转换为小时/分钟。是的,我修复了它,所以现在只有elif len(播放器)==0:工作。但是if len(players)>0部分不起作用。@user3103923你说它不起作用是什么意思?如果您的代码在
len(players)==0时可以返回True,那么如果
len(players)>0,它肯定会返回
True
,除非您的代码引发异常。如果它引发异常,请发布它。
different = float(time.time() - lotteryStart)