更新类

时间:2017-11-04 21:10:06

标签: python class

我不知道怎么说出这个问题我已经有4个小时的搜索了,我就在这里问。所以我会解决我的问题并希望最好!

我已经完成了这个程序的每一步并且已经让它运行了,但是我的大脑无法解决如何解决这个问题。

以下是说明:

匹配硬币:与两名玩家一起创建一个抛硬币游戏。

每个玩家以20个硬币开头。规则:

每个玩家扔掉自己的硬币

如果硬币匹配,

Player1获得Player2的硬币。

如果没有,则Player2从Player1获取硬币。

拥有最多硬币的人获胜。

在main()中,创建一个while循环,要求用户继续播放。

在每个循环中,报告结果......硬币匹配?

每位玩家的总硬币?

循环应该至少掷硬币一次。

需要“硬币”课程。该课程要求:

方法__init__()toss()get_sideup()get_amount()set_amount()

该类需要属性'__amount',初始化为20,'__sideup' 初始化为两个值之一,“Heads”或“Tails”。

'toss()'方法:生成随机值'0'或'1',相应地指定'Heads'或'Tails'。

'get_sideup()'方法:返回__sideup的当前值。

'set_amount()'方法:传递+1或-1以更改__amount,具体取决于折腾的结果。

'get_amount()'方法:返回__amount的当前值。

我有大部分工作,但我无法弄清楚如何将硬币添加到一个实例并从下一个实例中减去。 (我把self.get_amount作为填充函数,因为我有问题)

这是我的代码:

import random


class Coin (object):
    def __init__ (self, __amount = 20, __sideup = "Heads"):

        self.__amount = __amount
        self.__sideup = __sideup

    def toss (self):
        val = random.randint(0,1)
        if val == 0:
            self.__sideup = "Heads"
        else:
            self.__sideup = "Tails"

    def get_sideup (self):
        return self.__sideup

    def get_amount(self,):
        return self.__amount

    def set_amount (self, __amount):
        self.get_amount





c1 = Coin()
c2 = Coin()
play = input ("Do you want to play? (Y/N): ")
while play == "Y" or "y":
    c1.toss()
    c2.toss()
    if c1.get_sideup() == c2.get_sideup():
        c1.set_amount(+1)
        c2.set_amount(-1)
        print("player 1 wins")
    else:
        c1.set_amount(-1)
        c2.set_amount(+1)
        print("player 2 wins")

    print(" player1: " + str(c1.get_amount()) + " and player2: " + str(c2.get_amount()))
    play = input("Do you want to play? (y/n): ")

感谢任何伸出援手的人。如果我的问题的答案在这里,请链接它。我是初学者,不知道如何很好地说出我的问题。

1 个答案:

答案 0 :(得分:0)

您只需要通过将其重新绑定到硬币的set_amount方法中的__amount和self .__金额之和来更新您的硬币对象的自我.__金额属性。

def set_amount (self, __amount):
    self.__amount = self.__amount + __amount

或者更简洁一点,

def set_amount (self, __amount):
    self.__amount += __amount
相关问题