鱼C论坛

 找回密码
 立即注册
查看: 1269|回复: 5

[已解决]python class 还有函数调用

[复制链接]
发表于 2019-12-11 23:57:42 | 显示全部楼层 |阅读模式
2鱼币
各位大佬好 想问一下python里面 改classe 的值的问题 以下是我的代码


class addition():
    def __init__(self,name):
        self.name=name
        if name=='red':
            self.nb=0
        if name=='blue':
            self.nb=0

def func():
    a=input("输入red或blue")
    if a=='red'or a=='blue':
         if a=='red':
             new_a=addition(a)
             b='blue'
             new_b=addition(b)
             if new_a.nb==new_b.nb:
                 new_a.nb=new_a.nb+1
                 print("%d"%(new_a.nb))
             else:
                 new_b.nb=new_b.nb+1
                 print("%d"%(new_b.nb))
                 
         elif a=='blue':
               new_a=addition(a)
               b='red'
               new_b=addition(b)
               if new_a.nb==new_b.nb:
                  new_a.nb=new_a.nb+1
                  print("%d"%(new_a.nb))
               else:
                 new_b.nb=new_b.nb+1
                 print("%d"%(new_b.nb))
    else:
          pass
        
while True:
    func()

结果输出是:

输入red或bluered
1
输入red或blueblue
1
输入red或bluered
1


想问一下大佬 这里我第二次输入red 的时候为什么不是得到2 ?
如果我要得到2 我需要如何改我的代码?
最佳答案
2019-12-11 23:57:43
class addition():
    def __init__(self, name):
        self.name = name
        if name == 'red':
            self.nb = 0
        if name == 'blue':
            self.nb = 0

dict = {'new_a':'', 'new_b':''}
def func():
    while True:
        a = input("输入red或blue")
        if a == 'red' or a == 'blue':
            if a == 'red':
                if dict.get('new_a'):
                    new_a = dict.get('new_a')
                else:
                    new_a = addition(a)
                    dict['new_a'] = new_a
                b = 'blue'
                if dict.get('new_b'):
                    new_b = dict.get('new_b')
                else:
                    new_b = addition(b)
                    dict['new_b'] = new_b
                if new_a.nb == new_b.nb:
                    new_a.nb = new_a.nb + 1
                    print("%d" % (new_a.nb))
                else:
                    new_b.nb = new_b.nb + 1
                    print("%d" % (new_b.nb))

            elif a == 'blue':
                if dict.get('new_a'):
                    new_b = dict.get('new_a')
                else:
                    new_b = addition(a)
                    dict['new_a'] = new_b
                b = 'blue'
                if dict.get('new_b'):
                    new_a = dict.get('new_b')
                else:
                    new_a = addition(b)
                    dict['new_b'] = new_a

                if new_a.nb == new_b.nb:
                    new_a.nb = new_a.nb + 1
                    print("%d" % (new_a.nb))
                else:
                    new_b.nb = new_b.nb + 1
                    print("%d" % (new_b.nb))
        else:
            pass

func()
不太懂你要干啥   我只知道你每次都重新定义了一个新的类  导致每次都是1

最佳答案

查看完整内容

class addition(): def __init__(self, name): self.name = name if name == 'red': self.nb = 0 if name == 'blue': self.nb = 0 dict = {'new_a':'', 'new_b':''} def func(): while True: a = input("输入red或blue") if a == 'red' or a == 'blue': if a == 'red': if dict.get('new_a'): ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-11 23:57:43 | 显示全部楼层    本楼为最佳答案   
class addition():
    def __init__(self, name):
        self.name = name
        if name == 'red':
            self.nb = 0
        if name == 'blue':
            self.nb = 0

dict = {'new_a':'', 'new_b':''}
def func():
    while True:
        a = input("输入red或blue")
        if a == 'red' or a == 'blue':
            if a == 'red':
                if dict.get('new_a'):
                    new_a = dict.get('new_a')
                else:
                    new_a = addition(a)
                    dict['new_a'] = new_a
                b = 'blue'
                if dict.get('new_b'):
                    new_b = dict.get('new_b')
                else:
                    new_b = addition(b)
                    dict['new_b'] = new_b
                if new_a.nb == new_b.nb:
                    new_a.nb = new_a.nb + 1
                    print("%d" % (new_a.nb))
                else:
                    new_b.nb = new_b.nb + 1
                    print("%d" % (new_b.nb))

            elif a == 'blue':
                if dict.get('new_a'):
                    new_b = dict.get('new_a')
                else:
                    new_b = addition(a)
                    dict['new_a'] = new_b
                b = 'blue'
                if dict.get('new_b'):
                    new_a = dict.get('new_b')
                else:
                    new_a = addition(b)
                    dict['new_b'] = new_a

                if new_a.nb == new_b.nb:
                    new_a.nb = new_a.nb + 1
                    print("%d" % (new_a.nb))
                else:
                    new_b.nb = new_b.nb + 1
                    print("%d" % (new_b.nb))
        else:
            pass

func()
不太懂你要干啥   我只知道你每次都重新定义了一个新的类  导致每次都是1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-12 15:20:56 | 显示全部楼层
Fowindy 发表于 2019-12-12 03:51
class addition():
    def __init__(self, name):
        self.name = name

我想做一个类似于列表那样子的能累加的,  当a 和 b 的nb 一样时 才能在里面进行+1  当a 是1 b是0 时 必须先把b 加1之后才可以 再选其中一个加1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-12 22:03:01 | 显示全部楼层
?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-14 00:24:41 From FishC Mobile | 显示全部楼层
搞不懂你要做什么,表达也不清楚,确实每次都重新实例化了类,把类的实例化不要放在循环里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-14 09:30:04 | 显示全部楼层
楼主需求描述不清,大佬没时间深究的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表