如何在python函数中添加自定义参数?
我的名字叫皮尤斯,我刚刚开始学习用python编写代码。现在我正在做一个项目。如果有人能帮助在函数中添加自定义参数,我将不胜感激。 我在下面提到我的代码和我面临的问题:如何在python函数中添加自定义参数?,python,python-3.x,Python,Python 3.x,我的名字叫皮尤斯,我刚刚开始学习用python编写代码。现在我正在做一个项目。如果有人能帮助在函数中添加自定义参数,我将不胜感激。 我在下面提到我的代码和我面临的问题: class Chips (): def __init__ (self, total): while True: try: total = int(input("How many chips as total?: ?"))
class Chips ():
def __init__ (self, total):
while True:
try:
total = int(input("How many chips as total?: ?"))
except:
print("Please enter an integer")
else:
break
self.total = total
self.bet = 0
def win_bet (self):
self.total = self.total + self.bet
def loose_bet (self):
self.total = self.total - self.bet
但是,我可以设置total=100并可以运行游戏,但我希望用户能够输入他/她想要添加的总筹码
我希望while循环中的输入(总数)在运行游戏时作为参数。但我一直在犯这样的错误:
--
TypeError Traceback (most recent call last)
<ipython-input-9-b1b7b1c195f7> in <module>()
367
368 # Set up the Player's chips
--> 369 player_chips = Chips() # remember the default value is 100
370
371 # Prompt the Player for their bet:
TypeError: __init__() missing 1 required positional argument: 'total'
--
TypeError回溯(最近一次调用上次)
在()
367
368#设置玩家的筹码
-->369 player_chips=chips()#记住默认值是100
370
371#提示玩家下注:
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“total”
请帮忙
谢谢你关注我的请求 您的类在其构造函数中接受一个参数,但您也可以从构造函数中的输入读取它
def __init__ (self):
我想你对你在这里想要达到的目标感到困惑
备选案文1:
如果代码的调用者(构建类的代码)可以在实例创建时修改并知道total
,只需在构造函数调用中添加参数即可
total = 100
player_chips = Chips(total)
备选案文2:
如果您不能修改调用者(很可能是我读到的),那么这意味着您需要实际读取输入中的总数。从构造函数中删除参数
def __init__ (self):
而不是
def __init__(self, total):
您应该添加方法get_total_from_user并在构造函数中设置默认参数
class Chips ():
def __init__ (self, total=None):
self.total = self.get_total_from_user() if not total else total
self.bet = 0
def win_bet (self):
self.total = self.total + self.bet
def loose_bet (self):
self.total = self.total - self.bet
def get_total_from_user(self):
while True:
try:
return int(input("How many chips as total?: ?"))
except:
print("Please enter an integer")
else:
break
它允许您从用户处获取总计
Chips()
也可以通过传递值进行设置
Chips(100)
在代码的底部-没有错误。您在交互式构造函数中重写了total的值,但是,嘿,您在发送它时承诺了“init”
c = Chips()
如果您将签名更改为:
def __init__ (self, total):
总体而言,交互式构造函数似乎是一个非常糟糕的主意。您需要将
total
传递给Chips
:Chips(total)
。不要在\uuuu init\uuuu
中要求输入。相反,调用int(input())
outsideChips
并传递结果。另外,与使用exceptelse
子句不同,更好的方法是将分号放在可能是excepttotal=int的行之后(…
在你的情况下。@PatrickHaugh谢谢你的帮助。我会尽力去做的。谢谢你的时间和帮助。我一定会按照你的建议去做。谢谢你的帮助,我也这么做了。但是现在我得到了这个错误;欢迎来到21点!你总共要放多少筹码?199你想放多少筹码下注?10-------------------------------------------------------------------在()377378中键入错误回溯(最后一次呼叫)-提示玩家下注:-->379下注(玩家筹码)380 381-显示卡片:在下注(筹码)中242 243其他:-->244 if chips.bet>chips.total:245打印(f“对不起,您没有足够的筹码。您的帐户中有{chips.bet}筹码”)246 TypeError:“>”在“int”和“NoneType”实例之间不受支持。谢谢你的帮助和时间。我同意,但作为这种语言的新手,我每天都在学习,并尝试根据专业标准改变我的编码风格。此外,我想问你关于学习python的好学习材料的建议?我如果你能告诉我适合初学者的好python书籍或课程,我将不胜感激。StackOverflow对倡导外部资源、产品、平台、出版物等有严格的规定。如果你搜索“学习python”或“python实践”你会发现很多建议。寻找提供挑战层次的平台或测验。处理容易的问题,直到它们变得太容易,然后转移到更难的问题上。大多数路径都会有帮助,有些路径比其他路径更有帮助,但你是帮助你的最佳判断者。