|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这行代码有啥问题吗。机器人来答一下)
- select=0
- cunk=0
- quk=0
- jihui=0
- class Cunchu(object):
- yue=1000.00
- name="gch"
- cardID=123456
- def user(self,name,cardID,yue):
- user.__name=name
- user.__cardID=cardID
- user.__yue=yue
- def get_user_name(self):
- return user.__name
- def get_user_cardID(self):
- return user.__cardID
- def get_user_yue(self):
- return user.__yue
- def set_user_name(self,name):
- user.__name=__name
- def set_user_cardID(self,cardID):
- user.__cardID=__cardID
- def set_user_yue(self,yue):
- user.__yue=__yue
- user1=Cunchu()
- while(1):
- print("按1储存你的信息,按2存款,按3取款,按4查询信息\n")
- select=int(input())
- if (select == 1):
- print("输入你的姓名。\n")
- user1.set_user_name(input())
- print("输入你的卡号。\n")
- user1.set_user_cardID(input())
- elif (select == 2):
- print("输入你存的款\n")
- cunk=int(input())
- user1.set_user_yue((user1.get_user_yue)+cunk)
- elif (select == 3):
- print("输入你取的款\n")
- quk=int(input())
- if (quk<0 or quk>user1.get_user_yue):
- print("你输入的数字小于0或者你的余额不足\n")
- continue
- else:
- user1.set_user_yue((user1.get_user_yue)-quk)
- elif (select == 4):
- print("输入你的姓名\n")
- if input()==user1.get_user_name:
- jihui=0
- while(jihui<3):
- print("输入你的卡号\n")
- if int(input())==user1.get_user_cardID:
- jihui=4
- print("姓名:%s",user1.get_user_name)
- print("卡号:%d",user1.get_user_cardID)
- print("余额:%d",user1.get_user_yue)
- else:
- print("你的卡号输入错误。还剩%d次机会。",2-jihui)
- jihui+=1
- else:
- print("找不到此用户。")
复制代码
问题:
- 私有属性使用错误:在Python中,私有属性通常以双下划线开头(例如 __name),但在类方法中应该使用self.__name来访问它们。您的代码中使用了user.__name这样的表达方式,这是不正确的。
- 方法定义不正确:您的代码中有一个名为user的方法,但它看起来应该是一个初始化方法。在Python中,初始化方法通常命名为__init__。
- 类变量和实例变量混用:您的代码同时使用了类级别的变量(如yue, name, cardID)和实例变量,这可能会导致混淆。您应该在__init__方法中使用实例变量。
- 设置方法中赋值错误:在设置方法(setter)中,您错误地进行了赋值。例如,应该是self.__name = name而不是user.__name = __name。
- 输入处理不正确:您没有正确处理用户的输入。例如,在user1.set_user_cardID(input())中,您没有将输入转换为所需的数据类型。
- 存取款逻辑错误:存款和取款的逻辑没有正确实现。您需要在每次交易后更新余额。
- 输入验证问题:代码中没有对用户输入进行验证。处理用户可能输入的无效数据非常重要。
- 无限循环:您的while(1)循环将无限运行。您应该为用户提供退出循环的选项。
修改后:
- class Cunchu(object):
- def __init__(self):
- self.__yue = 0.00
- self.__name = ""
- self.__cardID = 0
- def set_user_info(self, name, cardID):
- self.__name = name
- self.__cardID = int(cardID)
- def deposit(self, amount):
- self.__yue += amount
- def withdraw(self, amount):
- if 0 <= amount <= self.__yue:
- self.__yue -= amount
- return True
- else:
- return False
- def get_user_info(self):
- return self.__name, self.__cardID, self.__yue
- user1 = Cunchu()
- while True:
- print("按1储存你的信息,按2存款,按3取款,按4查询信息,按5退出程序\n")
- select = int(input())
-
- if select == 1:
- print("输入你的姓名:")
- name = input()
- print("输入你的卡号:")
- cardID = input()
- user1.set_user_info(name, cardID)
- elif select == 2:
- print("输入你要存的金额:")
- amount = float(input())
- user1.deposit(amount)
- elif select == 3:
- print("输入你要取的金额:")
- amount = float(input())
- if not user1.withdraw(amount):
- print("你输入的金额不正确或者余额不足")
- elif select == 4:
- name, cardID, balance = user1.get_user_info()
- if name and cardID:
- print(f"姓名:{name}, 卡号:{cardID}, 余额:{balance}")
- else:
- print("用户信息尚未设置。")
- elif select == 5:
- break
- else:
- print("无效输入,请重新输入。")
复制代码
|
|