鱼C论坛

 找回密码
 立即注册
查看: 1966|回复: 8

[已解决]Python26讲动动手问题

[复制链接]
发表于 2021-1-1 15:26:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位新年快乐
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[temp] = 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('指令错误,请重新输入:')

运行的时候一直是invalid,请问各位这究竟是哪里出了问题?
还有小章鱼的代码为什么每次运行一个循环后就会空一行再继续运行下一次循环,是哪个代码实现了这个功能呢?
谢谢大家!
最佳答案
2021-1-2 12:46:25
本帖最后由 qin_yin 于 2021-1-2 13:04 编辑

Screenshot_20210102_124527_com.hipipal.qpy3.jpg
我跑了一下你的代码,发现很多地方提示语法错误,图中最后一行报错信息就是缩进错误。一个缩进(tab)等于4个空格,我发现你缩进错误的地方很多,导致整个代码块,很混乱,而且还是使用了为定义的变量,比如n我知道你想表达的意思,到Python认为这是个变量,他会去引用这个变量的值,如果没有变量对应的值就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 12:46:25 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 qin_yin 于 2021-1-2 13:04 编辑

Screenshot_20210102_124527_com.hipipal.qpy3.jpg
我跑了一下你的代码,发现很多地方提示语法错误,图中最后一行报错信息就是缩进错误。一个缩进(tab)等于4个空格,我发现你缩进错误的地方很多,导致整个代码块,很混乱,而且还是使用了为定义的变量,比如n我知道你想表达的意思,到Python认为这是个变量,他会去引用这个变量的值,如果没有变量对应的值就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 14:25:42 | 显示全部楼层
语法错误,就是一个缩进问题,楼上说的很对,主要是缩进错了,仅此而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 14:51:46 | 显示全部楼层
if a == N or a == n:
if a == E or a == e:
if a ==Q or a == q:


if a=='N' or a=='n':
elif a=='Q' or a=='q'
感觉有很多错
不用elif程序会多运行判断几次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 16:05:38 | 显示全部楼层
还有好几个位置的else都用错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 07:57:21 | 显示全部楼层
qin_yin 发表于 2021-1-2 12:46
我跑了一下你的代码,发现很多地方提示语法错误,图中最后一行报错信息就是缩进错误。一个缩进(tab)等 ...

谢谢您,我去改改看,还有小甲鱼那个代码为什么每次完成一个循环后会空一行然后再重新开始,我之前做的类似的题目每次完成一次循环后就直接开始下一次的循环,没有空行,这是怎么做到的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 08:14:46 | 显示全部楼层
谢谢大家,我去检查修改一下。还有小甲鱼那个代码为什么每次完成一个循环后会空一行然后再重新开始,我之前做的类似的题目每次完成一次循环后就直接开始下一次的循环,没有空行,这是怎么做到的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 04:48:52 | 显示全部楼层
qin_yin 发表于 2021-1-2 12:46
我跑了一下你的代码,发现很多地方提示语法错误,图中最后一行报错信息就是缩进错误。一个缩进(tab)等 ...

你好,我尝试改了一下那个缩进,好像还是有错误,这些while和if语句有些是在上一层的判断中的,所以多缩进了一次,但不知道究竟是哪里出了问题,能否指正一下。
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[temp] = code
            print('注册成功,赶紧试试登录吧/n')
            
        if a == E or a == e:
            username = str(input('请输入用户名:'))
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = str(input())
                
            passcode = str(input('请输入密码:')
            while passcode != dic1.get(username):
                print('密码错误,请重试:', end = '')
                passcode = str(input())
                
            print('欢迎进入系统,请点击右上角X结束程序!/n')
            program = 0
            
        if a ==Q or a == q:
            program = 0
            
        else:
            print('指令错误,请重新输入:')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 04:49:49 | 显示全部楼层
西瓜味的苹果 发表于 2021-1-2 14:25
语法错误,就是一个缩进问题,楼上说的很对,主要是缩进错了,仅此而已

你好,我尝试改了一下那个缩进,好像还是有错误,这些while和if语句有些是在上一层的判断中的,所以多缩进了一次,但不知道究竟是哪里出了问题,能否指正一下。
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[temp] = code
            print('注册成功,赶紧试试登录吧/n')
            
        if a == E or a == e:
            username = str(input('请输入用户名:'))
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = str(input())
                
            passcode = str(input('请输入密码:')
            while passcode != dic1.get(username):
                print('密码错误,请重试:', end = '')
                passcode = str(input())
                
            print('欢迎进入系统,请点击右上角X结束程序!/n')
            program = 0
            
        if a ==Q or a == q:
            program = 0
            
        else:
            print('指令错误,请重新输入:')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 21:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表