根据另一个变量增加变量

时间:2014-05-01 02:04:42

标签: python python-2.7

我有两个变量:“得分”和“奖励”,都初始化为0.每次得分增加5,我希望奖金增加1.我尝试过使用itertools.repeat,但我可以'让它工作。

初步想法:如果得分是5的倍数,并且至少是5,那么将奖金增加1。

if score>=5 and score%5==0:
    bonus += 1

不幸的是,这不起作用,因为我们会继续永久增加奖金。换句话说,当得分为5时,奖励变为1。 。 。然后2。 。 。等等,没有约束力。

想法:记录得分;如果得分是5的倍数,并且至少是5,那么检查我们之前是否已经看过5的倍数。如果我们之前没有看过5的这个倍数,那么将奖金增加1.现在我们可以避免重复计算。

if score>=5 and score%5==0:

    for x in range(5,score+1,5):
        score_array_mults_of_5 = []
        score_array_mults_of_5.append(x)
        for i in score_array_mults_of_5:
            if (i in range(5,score-5,5))==False:
                for _ in itertools.repeat(None, i):
                    bonus += 1

。 。 。除了这个实现也重复计算,也不起作用。

我已经阅读了StackExchange,Python文档,我已经尝试了两个小时的自己的解决方案了。请帮忙。

编辑:谢谢大家。所有有用的答案。

对于询问还有什么影响奖金的人:如果用户按下键盘按钮,则奖励下降1.我没有提及该部分,因为它似乎无关紧要。

2 个答案:

答案 0 :(得分:1)

嗯,你总是可以做到

bonus = int(score/5). 

如果分数确实如此(如果可能,以及您想要的行为),这也将确保奖金下降

但是你也可以使用你的第一个实现,只要你只是在更新得分时进行检查,而不是每个游戏周期。

答案 1 :(得分:0)

您可以bonus score/5

>>> score = bonus = 0
>>> score+=5
>>> bonus = score/5
>>> bonus
1
>>> score+=5
>>> score+=5
>>> score+=5
>>> score+=5
>>> score
25
>>> bonus = score/5
>>> bonus
5
>>> 

这是一种证明:

的方法
>>> while True:
...     try:
...             print 'Hit ^C to add 5 to score, and print score, bonus'
...             time.sleep(1)
...     except KeyboardInterrupt:
...             score+=5
...             bonus = score/5
...             print score, bonus
... 
Hit ^C to add 5 to score, and print score, bonus
Hit ^C to add 5 to score, and print score, bonus
^C5 1
Hit ^C to add 5 to score, and print score, bonus
Hit ^C to add 5 to score, and print score, bonus
^C10 2
Hit ^C to add 5 to score, and print score, bonus
^C15 3
Hit ^C to add 5 to score, and print score, bonus
^C20 4
Hit ^C to add 5 to score, and print score, bonus
^C25 5
Hit ^C to add 5 to score, and print score, bonus
^C30 6
Hit ^C to add 5 to score, and print score, bonus
^C35 7
Hit ^C to add 5 to score, and print score, bonus
Hit ^C to add 5 to score, and print score, bonus
...

要将其添加到您的代码中,您只需在每次添加bonus = int(score/5)后添加score