如何在python函数中添加自定义参数parameter?

时间:2018-08-09 17:26:27

标签: python python-3.x

我的名字叫Piyush,我刚开始学习用python编写代码。现在我正在做一个项目。如果有人可以帮助您在函数中添加自定义参数,我们将不胜感激。 我在下面提到我的代码和我面临的问题:

<?php
$re = '/([$][a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)/m';
$str = '"SELECT * FROM table WHERE admin=\'".$admin."\' AND id=".$idclient." AND something=".$something;';
$subst = 'functionname($1)';
$result = preg_replace($re, $subst, $str);
echo $result;
?>

但是,我可以设置total = 100并可以运行游戏,但是我希望用户能够输入他/她想要添加的总筹码。

我希望while循环中的输入(总计)作为运行游戏时的参数。但是我不断收到此错误:

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  

请帮助!

感谢您关注我的要求。

3 个答案:

答案 0 :(得分:1)

您的类在其构造函数中带有一个参数,但是您也可以从构造函数的输入中读取它。

我想您对在这里想要实现的目标感到困惑。

选项1:

如果可以修改代码的调用者(构成类的代码),并在实例创建时知道total,只需在构造函数调用中添加参数即可。

total = 100
player_chips = Chips(total)

选项2:

以防万一您无法修改调用方(很可能是从我阅读的内容),那么这意味着您实际上想从输入中读取总计。从构造函数中删除参数。

def __init__ (self):

代替

def __init__(self, total):

答案 1 :(得分:0)

您应该添加方法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)

答案 2 :(得分:0)

c = Chips(100)
代码底部的

-没有错误。您可以在交互式构造函数中覆盖 total 的值,但是,您答应要发送“ init ”。

c = Chips()
如果您将签名更改为:

可以工作

def __init__ (self, total):

总体而言,交互式构造函数似乎是一个非常糟糕的主意。