新手学习了新版python,自习遇到了问题,求助大神。
本人销售一名,今天入坑,0计算机基础。通过B站心血来潮学习了鱼哥的一课python入门,通过第一个的猜数字小游戏,自己做了个自习,遇到了一堆问题。自习码(可运行):
《判断卡密对错》
import time
print('\n\n\n\n\n¥欢迎您使用中国工商银行 电子银行¥\n\n\n\n\n')
temp1 = input('请输入您的银行卡账号:')
asss = int(temp1)
if asss == 17666666666:
print('\n\n卡号正确!请稍后。。。\n\n')
else:
print('\n\n账号错误,请仔细核对卡号!\n\n\n')
time.sleep(2)
temp2 = input('请输入您的银行卡密码:')
mmm = int(temp2)
int(temp2)
if mmm == 888888:
print('\n\n密码正确!\n\n你的账户余额为8868.88元')
else:
print('\n\n密码错误,请联系银行工作人员!')
现在想求助几个问题:
1.如何在输入密码的时候,把数字变成******号这种隐藏字符
2.如何在输入账号错误的情况下终止接下来的步骤,重复输入账号的操作,直到正确后,再进行验证密码操作,密码也是一样,
现在的问题是,就算账号输入错了,也不提示,会继续让输入密码,然后最后会一起提示。
3.如何把能进行多账户,转账操作,并且余额同时会变动。
以上问题求助各位大佬,兴趣使然,感谢传授指导。 1.https://blog.csdn.net/xc_zhou/article/details/80788436,这个帖子介绍了详细的方法,适应多个平台。
2.pip install goto-statement,使用第三方的包,实现类似C语言中的goto代码跳转功能,但是不建议。或者可以写成循环的形式,很粗暴的输对密码才能跳出循环。(本人拙见,还希望别的大佬提供更优秀的方法)
3.多账户,数据更改这样的操作,可以考虑数据库,能够方便的实现你的这些要求,但是目前代码太过于简单,需要重新设计。 本帖最后由 Twilight6 于 2020-7-20 01:07 编辑
1.如何在输入密码的时候,把数字变成******号这种隐藏字符?
看楼上的链接进行使用
2.如何在输入账号错误的情况下终止接下来的步骤,重复输入账号的操作,直到正确后,再进行验证密码操作,密码也是一样,
现在的问题是,就算账号输入错了,也不提示,会继续让输入密码,然后最后会一起提示。
3.如何把能进行多账户,转账操作,并且余额同时会变动。
帮你改了下整体代码,美观了许多:
1.添加判断账号长度和输入合法字符功能
2.优化 print 和 time.sleep 函数配合使用的打印效果
3.添加判断输入密码错误次数功能
4.深夜敲码不易,如果对你有帮助记得给个【最佳答案】哈~
完整代码:
import time
print('''
┌--------------------------------------┐
| |
¥欢迎您使用中国工商银行 电子银行¥
| |
└--------------------------------------┘''')
print('|\n|-请输入您的银行卡账号:', end='')
judge = True
while judge:
temp1 = input()
while not temp1.isdigit() or not (len(temp1) == 11):
if not temp1.isdigit():
temp1 = input('|--抱歉!您输入账号存在非合法字符,请重新输入:')
else:
temp1 = input('|--抱歉!您输入账号长度不正确,请重新输入:')
if temp1 == '17666666666':
print('|\n|--卡号正确!登入中,请稍后', end='')
for i in range(6):
time.sleep(0.35)
print('.', end='')
print()
else:
print('|\n|--账号错误,请仔细核对卡号!\n|-请重新输入您的银行卡账号:', end='')
continue
print('|\n|---请输入您的银行卡密码:',end='')
count = 5
while True:
temp2 = input()
if temp2 == '888888':
print('|\n|---密码正确!正在获取用户数据,请稍后', end='')
for i in range(6):
time.sleep(0.35)
print('.', end='')
print()
print('|---你的账户余额为8868.88元')
judge = False
break
else:
count -= 1
if count != 0:
print('|\n|---密码错误,您还有%d次机会,若多次输入错误,账号将被暂时冻结!\n|\n|---请再次输入您的银行卡号:'%count,end='')
else:
print('|\n|---用户密码多次输入错误,该银行卡号已经冻结,如有问题,请联系银行工作人员!')
judge = False
break
print('|\n|---正在退出程序',end='')
for i in range(6):
time.sleep(0.35)
print('.', end='')
print('\n|\n|---感谢使用中国工商银行查询系统!祝您生活愉快~再见!')
Twilight6 发表于 2020-7-20 00:50
看楼上的链接进行使用
end=’ ’这个代表什么意思 505289859 发表于 2020-7-20 04:18
end=’ ’这个代表什么意思
end 是 print 函数的默认参数,而且是在 print 内容打印结束后,自动追加打印一个 end ,他的默认值为 end ='\n' 换行符号 我们用end="" 覆盖他的默认值 print 函数就不会自动换行 学到了{:10_254:} 知識+1 謝謝 本帖最后由 石泊远 于 2020-11-24 23:24 编辑
啊,终于写完啦
改变了一下3L大佬的
import time as t
import random as r
def goto():
print()
for j in range(3):
for i in range(10):
print('.',end='')
t.sleep(0.1)
print()
def error():
while True:
print('error',end='')
zh = '1766666666666666'
mm = '888888888888888A' #16
money = r.randint(100,100000)
cw = 0
yesnodl = True
print('''
╔═════════████═════════╗
║ ║
║ ¥欢迎您使用中国工商银行电子银行¥ ║
║ ║
╚═════════████═════════╝
''')
t.sleep(1)
while yesnodl:
cinzh = input('请输入您的账号:')
while not cinzh.isdigit() or (len(cinzh) > 17 or len(cinzh) < 15):
if not cinzh.isdigit():
cw+=1
cinzh = input('|--抱歉!您输入账号存在非合法字符,请重新输入:')
elif (len(cinzh) > 17) or (len(cinzh) < 15):
cw+=1
cinzh = input('|--抱歉!您输入账号长度错误,请重新输入:')
if cw <= 10:
if cinzh == '1766666666666666':
print('|\n|--卡号正确!登入中,请稍后', end='')
goto()
else:
print('|\n|--账号错误,请仔细核对卡号!\n|-请重新输入您的银行卡账号:', end='')
continue
cinmm = input('|\n|---请输入您的银行卡密码:')
mmcw = 5
while True:
if cinmm == '888888888888888A':
print('|\n|---密码正确!正在获取用户数据,请稍后', end='')
goto()
print()
print(f'|---你的账户余额为{money}元')
yesnodl = False
break;
else:
mmcw -= 1
if mmcw != 0:
print(f'|\n|---密码错误,您还有{mmcw}次机会,若多次输入错误,账号将被暂时冻结!\n|\n|---请再次输入您的银行卡号:',end='')
else:
print('|\n|---用户密码多次输入错误,该银行卡号已经冻结,如有问题,请联系银行工作人员!')
judge = False
break
else:
print('错误次数过多,退出')
goto()
break
print('|\n|---正在退出程序',end='')
goto()
print('\n|\n|---感谢使用中国工商银行查询系统!祝您生活愉快~再见!')
学习了 头脑风暴,获益匪浅
页:
[1]