是Pluto啊 发表于 2021-1-2 03:03:37

Python26讲动动手问题

题目是:尝试编写一个用户登录程序
我写的代码是:
dic1 = {}
program = 1
def login():
    while program:
      print('''|---新建用户:N/n---|
|---登录账户:E/e---|
|---退出程序:Q/q---|
|---请输入程序代码:''', end = '')
      a = input()
      if a == N or a == n:
            temp = str(input('请输入用户名:'))
            while temp in dic1:
                print('此用户名已经被使用,请重新输入', end = '')
                temp = str(input())
            code = str(input('请输入密码:'))
            dict1 = code
            print('注册成功,赶紧试试登录吧/n')
      if a == E or a == e:
            username = str(input('请输入用户名:'))
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = str(input())
            else:
                passcode = str(input('请输入密码:')
                while passcode != dic1.get(username):
                  print('密码错误,请重试:', end = '')
                  passcode = str(input())
                else:
                  print('欢迎进入系统,请点击右上角X结束程序!/n')
                  program = 0
      if a ==Q or a == q:
            program = 0
      else:
            print('指令错误,请重新输入:')

运行的时候一直提示标红的地方有错误,请问一下究竟是哪里出问题了?还有小章鱼这道题的代码为什么每次运行一个循环后就会空一行再继续运行下一次循环,是哪个代码实现了这个功能呢?
谢谢大家!

昨非 发表于 2021-1-2 20:59:23

前一行(24行)的str()少了右侧括号
而且,input函数的返回值就是字符串,完全没必要加上str()
前面也没必要加上str()

昨非 发表于 2021-1-2 21:06:22

本帖最后由 昨非 于 2021-1-2 21:14 编辑

好多小毛病,已经修改了
dic1 = {}
def login():
    program = 1
    while program:
      print('''|---新建用户:N/n---|
|---登录账户:E/e---|
|---退出程序:Q/q---|
|---请输入程序代码:''', end = '')
      a = input()
      if a not in ['N','n','E','e','Q','q']:   #把最后的else移到最上边来,避免多余的打印
            print('指令错误,请重新输入:')

      if a == 'N' or a == 'n':            #这里n要加引号,==前后都是字符串类型,必须相同,下面也一样
            temp = input('请输入用户名:')
            while temp in dic1:
                print('此用户名已经被使用,请重新输入', end = '')
                temp = input()
            code = input('请输入密码:')
            dic1 = code                        #这儿有拼写错误
            print('注册成功,赶紧试试登录吧/n')
      if a == 'E' or a == 'e':
            username = input('请输入用户名:')
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = input()
            else:
                passcode = input('请输入密码:')
                while passcode != dic1.get(username):
                  print('密码错误,请重试:', end = '')
                  passcode = input()
                else:
                  print('欢迎进入系统,请点击右上角X结束程序!/n')
                  #program = 0    #如果加上这个的话,程序执行到登陆成功就会自动退出
      if a == 'Q' or a == 'q':
            program = 0

login()

是Pluto啊 发表于 2021-1-4 16:36:25

昨非 发表于 2021-1-2 21:06
好多小毛病,已经修改了

太谢谢你啦,新年快乐!

昨非 发表于 2021-1-4 16:36:51

是Pluto啊 发表于 2021-1-4 16:36
太谢谢你啦,新年快乐!

新年快乐{:10_297:}
页: [1]
查看完整版本: Python26讲动动手问题