更新类实例的属性值

2021-10-17 17:09:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道该怎么说这个问题,我有4个小时的搜索后,我留在这里问。所以我会把我的问题摆出来,希望一切顺利!你知道吗

我已经完成了这个程序的每一步,并让它运行,但我的大脑不能围绕如何解决这个问题。你知道吗

以下是说明:

匹配硬币:创建一个有两个玩家的掷硬币游戏。你知道吗

每个玩家从20个硬币开始。规则:

每个玩家都掷自己的硬币

如果硬币匹配

玩家1得到玩家2的硬币。你知道吗

否则,玩家2将从玩家1处获得硬币。你知道吗

谁的硬币最多谁就赢。你知道吗

在main()中,创建一个while循环,请求用户继续播放。你知道吗

在每个循环中,报告结果…匹配的硬币?你知道吗

每个玩家的总硬币数?你知道吗

循环应该至少掷硬币一次。你知道吗

需要一个“硬币”类。课程要求:

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

该类需要属性'\u amount',初始化为20和'\u sideup' 初始化为两个值之一,“Heads”或“Tails”。你知道吗

'toss()'方法:生成一个随机值'0'或'1',相应地分配'Heads'或'Tails'。你知道吗

'get\u sideup()'方法:返回\u sideup的当前值。你知道吗

方法:根据掷骰结果,传递+1或-1来改变掷骰金额。你知道吗

'get\u amount()'方法:返回\u 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): ")

感谢所有伸出援手的人。如果我的问题的答案在这里,请链接它。我是个初学者,不知道怎么把我的问题说得很好。你知道吗