给定输入的输出错误

时间:2014-04-13 10:38:25

标签: python class math

这是我的代码:

#!/bin/python
#gets the id of the player
player = input()


first_moves = [int(i) for i in raw_input().split()]
second_moves = [int(i) for i in raw_input().split()]

class calculate_bid(object):
    def __init__(self,player,first_moves,second_moves):
        self.myMove=[]
        self.yourMove=[]
        self.myCash=100
        self.yourCash=100
        self.pos=0
        if player==1:
            self.myMove.extend(first_moves)
            self.yourMove.extend(second_moves)
            self.tie=True
        else:
            self.myMove.extend(second_moves)
            self.yourMove.extend(first_moves)
            self.tie=False
        for self.x in range(len(self.myMove)):
            if self.myMove[self.x]>self.yourMove[self.x]:
                self.myCash-=self.myMove[self.x]
                self.pos+=1
            elif self.myMove<self.yourMove[self.x]:
                self.yourCash-=self.yourMove[self.x]
                self.pos+=1
            else:
                if self.tie==True:
                    self.myCash-=self.myMove[self.x]
                    self.pos+=1
                    self.tie=False
                else:
                    self.yourCash-=self.yourMove[self.x]
                    self.pos-=1
                    self.tie=True
        print self.myCash,self.yourCash

为什么,如果我提供此输入

2
4 15
8 8

打印

92,-15

注意: 我不认为这只发生在我的电脑上。当我在HackerRank中运行这个时,会发生同样的情况。

注意: 当第二个数字yourCash通过(15 8)语句时,elif变为零。在此之前,它仍然是100.我在来这里之前调试了它。

注意: 我试过thisthis,但没有运气。

更新

此输入:

2
4 15 7
8 8 6

产生输出:

92, -14

我期待:

92, 79

2 个答案:

答案 0 :(得分:2)

我不知道你的代码应该做什么,但可能你想减去现金的动作。这就是你在ifelif子句以及if子句的else部分内部循环中所做的。但是,在else / else部分,您将现金设置为负面移动:

self.yourCash=-self.yourMove[self.x]

虽然你可能想写

self.yourCash -= self.yourMove[self.x]

答案 1 :(得分:2)

首先,在这一行中,您将移动与整个self.myMove数组进行比较:

elif self.myMove<self.yourMove[self.x]:

你真的想要与位置self.x

的元素进行比较
elif self.myMove[self.x]<self.yourMove[self.x]:

这个bug会导致else分支出现,你遇到Carsten已经提到过的问题,在这里你否定了移动而不是减去它。而不是

self.yourCash=-self.yourMove[self.x]

你想要

self.yourCash-=self.yourMove[self.x]