Python 3中关于函数引用自身的问题

2024-04-29 12:54:02 发布

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

我正在编写这段代码,但是启动函数没有运行。我没有收到任何错误。这是纸牌游戏,救命?我使用的是Python3,在Windows10上通过命令提示符运行。对于我的文本编辑器,我使用的是Atom

import random
print("Sam's Casino")

class Game:

    def __init__(self):
        self.cards = ['1','2','3','4','5','6','7','8','9','10','J',
        'Q','K','1','2','3','4','5','6','7','8','9','10','J',
        'Q','K','1','2','3','4','5','6','7','8','9','10','J',
        'Q','K','1','2','3','4','5','6','7','8','9','10','J',
        'Q','K']
        self.hand1 = []
        self.hand2 = []
        self.center = []
        self.pile1 = []
        self.pile2 = []
        self.points1 = 0
        self.points2 = 0
        input('__init__ completed - ')
        self.startup(self)

    def deal(self):
        self.count = 0
        for card in self.cards:
            if self.count < 4:
                self.hand1.append(card)
                self.count += 1
            elif self.count > 3 and self.count < 8:
                self.hand2.append(card)
                self.count += 1
            print('hi')
            input('deal test - ')

    def startup(self):
        input('startup __init__ test:')
        print("Sam's Casino Version 1.1")
        random(self.cards)
        print(self.cards)

        self.deal(self)
        print(self.hand1)
        print(self.hand2)
        input('self.startup completed - ')

    def trick(self):
        self.points1_add = input('Points1_add? - ')
        self.points2_add = input('Points2_add? - ')
        self.points1 += self.points1_add
        self.points2 += self.pointd2_add
        input('trick test1 - ')

    def turn(self):
        startup(self)
        while self.points1 < 21 and self.points2 < 21:
            print('turn test - ')
            trick(self)

Key = input('Game()_run? - ')
if Key == 'y':
    Game().run()
elif Key == 'n':
    print('closing')
    input('ctest')
else:
    print('invalid input')
    input('')

Tags: selfaddgameinputinitdefcountcards
1条回答
网友
1楼 · 发布于 2024-04-29 12:54:02

如果你没有发现任何错误,那么你需要检查你的工作环境。我显然犯了个错误

Traceback (most recent call last):
  File "so.py", line 60, in <module>
    Game().run()
  File "so.py", line 20, in __init__
    self.startup(self)
TypeError: startup() takes 1 positional argument but 2 were given

此呼叫是多余的:

    self.startup(self)

self是任何实例方法的隐式第一个参数:调用对象成为第一个参数。简单地称之为

    self.startup()

这将使你克服第一个结构性问题


我强烈建议您回过头来,对代码进行小规模的测试。在没有测试结构的情况下,您已经编写了50多行代码。在你填写这么多细节之前,先测试一下你的连通性。一次添加几行,测试每个添加。我已经修复了三个这样的错误,但仍然有错误

相关问题 更多 >