【问题标题】:How to record first occurrences in a while loop如何在while循环中记录第一次出现
【发布时间】:2020-12-01 02:21:35
【问题描述】:

我有两个值 b_killsp_kills 代表每个团队已经完成的击杀次数,其中每个值在 while 循环中每约 5 秒更新一次。我试图做的是记录哪支球队获得了首杀(在一场比赛中)。我尝试使用 prev_b_killsprev_p_kills 来记录每个团队在上一个 while 循环中的击杀数:

while:

...

b_kills, p_kills = ..., ...

...

    if b_kills >= 1 and prev_b_kills == 0 and p_kills == 0:
        b_fkill = 1  # Binary value, 1 if blue team got the first kill, 0 if purple team got it
    
    elif p_kills >= 1 and prev_p_kills == 0 and b_kills == 0:
        b_fkill = 0
    
    else:
        b_fkill = 0.5  # If both team get the first kill at the same time

    prev_b_kills, prev_p_kills = b_kills, p_kills

当我在游戏已经开始时运行此循环时出现问题,但是我无法推断出哪个团队获得了第一个击杀,所以我也应该将值设置为 0.5。

请注意,我在 while 循环之前定义了 b_fkills = 0.5,因为它是普通值,并且如果我不知道哪个团队获得了第一个杀戮,应该保留的值。另外,我尝试在 while 循环中添加一个计数器来检查迭代是否是 while 循环中的第一次迭代:

b_fkills = 0.5

while:
    iter_ = 1

    ...

    if iter_ == 1:
        if b_kills == 0 and p_kills == 0:
             prev_b_kills, prev_p_kills = 0, 0
    
    else:
        ...

    ...

    iter_ += 1

我试图解释从游戏中间开始的 while 循环,但我卡住了。我还想将它包装在一个函数中,因为我想多次使用它,但正如我所说,我想不出办法。

【问题讨论】:

  • 对你“卡住”到底是什么感到困惑,所以不确定这是否有帮助......但是,你在 while 循环的顶部初始化iter_ = 1,这意味着每次循环时@987654329 @ 将是 1。
  • 是否有理由让您的游戏在发生“杀戮”时调用一个简单的函数,该函数可以为其添加时间戳并保持记录(这将是一个微不足道的函数)。您正在处理所有这些问题,似乎稍微不同的方法可以解决所有问题......
  • 不可能。我正在抓取“击杀计数”,因此,在给定的时间,我只能使用每个团队的累积击杀变量。而且正如我所说,这并不能解释我在游戏中期开始抓取统计数据的情况。我想我做对了,即使代码有点意大利面。我将发布解决方案。

标签: python python-3.x algorithm loops while-loop


【解决方案1】:

我建立在我已有的基础上,并且它工作正常(到目前为止),但代码真的很乱。

# Check for the score already in place
if iter_ == 1:
    if b_kills != 0 and p_kills != 0:
        b_fkills_pass = False
    else:
        b_fkills_pass = True
        prev_b_kills, prev_p_kills = 0, 0

if b_fkills_pass == True:
    if b_kills >= 1 and prev_b_kills == 0 and p_kills == 0:
        b_fkills = 1
    elif p_kills >= 1 and prev_p_kills == 0 and b_kills == 0:
        b_fkills = 0
    else:
        b_fkills = 0.5
else:
    b_fkills = 0.5

prev_b_kills, prev_p_kills = b_kills, p_kills

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2015-10-20
    相关资源
    最近更新 更多