问题1: 字典好像可以用== 比较? 但是我不同电脑好像运行不出来。
问题2: 好像判断某个值在列表里 可以用 in? 但是运行不出来
先附上问题1代码:
# 银行自助存取款系统
#初始账号信息
Account=[{"卡号":"1","密码":"123","金额":"10000"},{"卡号":"2","密码":"121","金额":"15000"},{"卡号":"15","密码":"143","金额":"15000"}]
#定义学生信息输出函数
def showAccu(Account):
print("{0:5}{1:10}".format("账户金额",Account["金额"]))
#账户密码登陆
while True:
print("="*20,"银行自助系统","="*20)
ac1={}
ac1["卡号"]=input("请输入卡号:")
ac1["密码"]=input("请输入密码:")
#账户密码比对
for i in range(len(Account)): #提取卡号、密码构建新的字典
ac2={}
ac2["卡号"]=Account[i]["卡号"]
ac2["密码"]=Account[i]["密码"]
if ac1==ac2: #这个地方 发现我用不同的电脑,有些能运行出来,有些不行
while True:
print("="*20,"欢迎进入本系统","="*20)
print("{0:1}{1:15}{2:20}".format(" ","1.账户查询","2.取款"))
print("{0:1}{1:15}{2:20}".format(" ","3.存款","4.退出系统"))
print("="*50)
key=input("请输入选择:")
if key=="1":
print("="*15,"账户查询","="*15)
showAccu(Account[i])
input("请输入回车继续:")
if key=="2":
print("="*15,"取款系统","="*15)
BaseMoney=int(Account[i]["金额"]) #原始金额
DrawMoney=int(input("请输入要取金额:")) #取款金额
a=BaseMoney-DrawMoney
if BaseMoney-DrawMoney>=0: #金额更新
Account[i]["金额"]=a
showAccu(Account[i])
else:
print("="*15,"账户金额不足","="*15)
input("请输入回车继续:")
if key=="3":
print("="*15,"存款系统","="*15)
BaseMoney=int(Account[i]["金额"])
SaveMoney=int(input("请输入要存金额:")) #取款金额
b=BaseMoney+SaveMoney
Account[i]["金额"]=b
showAccu(Account[i])
input("请输入回车继续:")
if key=="4":
print("="*15,"再见","="*15)
input("请输入回车退出!")
break
break
else:
break
print("="*20,"密码或账户信息错误","="*20)
print("="*20,"请重新登录","="*20)
问题点2代码:
#初始账号信息
Account=[{"卡号":1,"密码":123,"金额":10000},{"卡号":2,"密码":121,"金额":15000},{"卡号":15,"密码":143,"金额":15000}]
#定义学生信息输出函数
def showAccu(Account):
print("{0:5}{1:10}".format("账户金额",Account["金额"]))
#账户密码登陆
print("="*20,"银行自助系统","="*20)
key1=input("请输入卡号:")
key2=input("请输入密码:")
listNum=[]
listCode=[]
# 遍历填充卡号/密码列表
for i in range(len(Account)):
listNum.append(Account[i]["卡号"])
listCode.append(Account[i]["密码"])
print("{0:5}{1:10}".format("账户金额",listNum[i]))
print("{0:5}{1:10}".format("账户金额",listCode[i]))
print(listNum)
print(listCode)
# 比对输入卡号是否在列表里
if key1 in listNum: # 不论卡号密码输入与预存是否一直,运行一直跳到 ==》账户信息错误 !感觉这里没判断,默认else!
#比对密码
if key2 in listCode:
print("="*20,"欢迎进入本系统","="*20)
print("{0:1}{1:15}{2:20}".format(" ","1.账户查询","2.取款"))
print("{0:1}{1:15}{2:20}".format(" ","3.存款","4.退出系统"))
print("="*50)
key=input("请输入选择:")
else:
print("="*20,"密码错误","="*20)
else:
print("="*20,"账户信息错误","="*20)
=============================================================
问题已解决:发现是input默认你会输入任何值,默认是输入字符串的。问题1里我初始定义列表里用的字符串,因此是可以运行正常的,哪怕是我input不是数字,而是字母。
但是问题2里的初始定义用的为 整形 值。因此要么变成字符串。 要么 输入key1 key2 强制转换成int类型
key1=int(input(""))
可以用type来确认值的类型,比较确认!
最后今后编程注意:
值的类型!!!