这行代码有啥问题吗
这行代码有啥问题吗。机器人来答一下)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("找不到此用户。") @FishC 一点沙 发表于 2023-12-11 11:32
@FishC
嗨!你好!有什么问题我可以帮助你解答呢?
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 一点沙 于 2023-12-11 11:34 编辑
@FishC 这几行代码有什么问题
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("找不到此用户。")
FishC 发表于 2023-12-11 11:32
嗨!你好!有什么问题我可以帮助你解答呢?
以上回复来自 FishC AI 小助理,如未能正确解答您的问题, ...
下面这个代码有什么问题?
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("找不到此用户。") 人造人 发表于 2023-12-11 12:33
下面这个代码有什么问题?
select=0
cunk=0
quk= ...
这段代码存在一些问题。让我们逐个解决它们:
1. 在类定义中,函数 `user` 的定义不正确。应该是使用 `self.name`、`self.cardID` 和 `self.yue` 来引用实例变量,而不是 `user.__name`、`user.__cardID` 和 `user.__yue`。
正确的代码应该是这样的:
def user(self, name, cardID, yue):
self.name = name
self.cardID = cardID
self.yue = yue
2. 在 `set_user_name`、`set_user_cardID` 和 `set_user_yue` 函数中,赋值语句的左侧应该是 `self.name`、`self.cardID` 和 `self.yue`,而不是 `user.__name`、`user.__cardID` 和 `user.__yue`。
正确的代码应该是这样的:
def set_user_name(self, name):
self.name = name
def set_user_cardID(self, cardID):
self.cardID = cardID
def set_user_yue(self, yue):
self.yue = yue
3. 在 `get_user_yue` 和 `set_user_yue` 函数中,名称 `__yue` 不太合适,应该改为 `yue`。
正确的代码应该是这样的:
def get_user_yue(self):
return self.yue
def set_user_yue(self, yue):
self.yue = yue
4. 在 `while` 循环中,有一个未结束的 `while` 循环。你可能忘记了添加循环的结束条件。
正确的代码应该是这样的:
jihui = 0
while jihui < 10:# 假设你想要执行十次循环
# 循环体的代码
jihui += 1
这些是我发现的问题,希望对你有帮助!如果还有其他问题,请随时问我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 问题:
[*]私有属性使用错误:在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("无效输入,请重新输入。")
页:
[1]