哲子DZ 发表于 2016-9-22 10:28:13

【课后作业】第9讲代码问题

string = str(input('请输入密码:'))
code = str('哲子')
time = 3
while time > 0:
    j = string.find('*')
    if j != -1 :
      print('密码中不能含有“*”号!您还有' + str(time) +'次机会!',end= '')
      string = str(input('请输入密码:'))
    else :
      if string != code :
            time -= 1
            print('密码输入错误!您还有' + str(time) +'次机会!',end = '')
            string = str(input('请输入密码:'))
      else :      
            
            print('密码正确,正在进入程序......')
            break
以上是自己写的代码。有如下问题:
1.在还有1次输入密码的机会时输入正确的密码:哲子,程序不会“显示密码正确,正在进入程序......”
2.当次数用尽的时候,我想在程序最后显示“密码错误,不能进入程序,但是怎么也不对”
麻烦请大家告诉我代码哪里有问题,谢谢!谢谢!!!

哲子DZ 发表于 2016-9-22 21:03:45

没人啊,顶个贴。。

小古比鱼 发表于 2020-12-14 12:05:33

代码的问题在于当time为0时,还会再次进入循环,这有点不符合常理。
程序改进:
string = str(input('请输入密码:'))
code = str('哲子')
time = 3            # 用户只有3次机会
while True:         # 永久循环,循环体内设有退出条件
    j = string.find('*')
    if j != -1:
      print('密码中不能含有“*”号!您还有' + str(time) + '次机会!',end = '')
      string = str(input('请输入密码:'))
    else:
      if string != code:
            time -= 1
            if time:    # 用户还有机会
                print('密码输入错误!您还有' + str(time) + '次机会!',end = '')
            else:       # 用户机会用尽
                print('密码错误,不能进入程序。')
                break   # 退出循环
            string = str(input('请输入密码:'))
      else:
            print('密码正确,正在进入程序......')
            break
页: [1]
查看完整版本: 【课后作业】第9讲代码问题