鱼C论坛

 找回密码
 立即注册
查看: 1703|回复: 9

[已解决]关于密码解密的提问

[复制链接]
发表于 2021-1-17 10:28:58 | 显示全部楼层 |阅读模式

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

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

x
问题放在二楼!
最佳答案
2021-1-17 16:57:54
本帖最后由 Daniel_Zhang 于 2021-1-17 17:03 编辑
AresFC 发表于 2021-1-17 11:00
谢谢 因为想要循环转译密码 所以可能还是需要保留while True   我自己也发现了是对齐的问题……请问应该 ...


你有这个问题的话,说明你对程序的运行逻辑还是不太了解

其实你在写的时候,可以想一想每一句自己究竟在干什么。

比如说你的 while True,就是当你没有退出时,一直循环整个程序的主体,也就是你想要多次输入密文,直到你退出程序。

那么问题就来了,你想要每次输入之后,获得一次明文对吧?但是你一开始的写法,会一直要求你输入密文,直到退出程序,此时肯定就不是你想要的,所以你的 print 要有一个缩进,让它在 while True的判断下面,当 while True 的时候,获取指定的密文,输出对应的明文




总的来说,你在敲代码之前,要想好,你的逻辑关系是什么。比如说你上午要做的任务如下:起床,穿衣,刷牙洗脸,上厕所,洗手,吃饭,学习,睡觉。下面均为伪代码~

那么你就要想到,你只有起床了,你才能穿衣对吧?所以穿衣得在这个 if的条件下面,即有一个缩进,当满足 if 的条件时,才能穿衣。

if 起床:
        穿衣

因此,如图所示,其它的事情要在 if 的下面,不然你实现不了想要的目的

再接下来只需要满足穿衣的条件就可以去上厕所了(冬天冷,夏天就无所谓了

if 穿衣:
        上厕所

那么问题就来了,是不是上厕所以后你得洗手?如果没洗手,干别的,呕 所以你得有一个 if 在这里判断,如果你上厕所了,那么就要洗手,并且只有洗手之后,你才能刷牙洗脸

if 上厕所:
        洗手
        if 洗手:
                刷牙洗脸

然后刷牙洗脸之后,你才能吃饭,所以:
if 刷牙洗脸:
        吃饭

吃饭后学习,学习后午休,以此类推

小明一生坚持按照某一个顺序做事,直到放弃(退出,或者挂了)了
while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉

所以这一生持续判断自己有没有完成if 里面的条件,当完成了,才能进入 if,否则将反复循环,直到小明完成了 if

但是此时,一个令人难以抵挡住诱惑的事情发生了,小明很想看某个学习资料文件夹里面的 某知名男星龟兄的 视频!!! 管他呢,劳资不论有没有起床也能看,不论有没有吃饭也能看,不论有没有洗手也能看,不需要满足任何其他条件,唯一的条件就是,自己活着(一直在循环)

那么此时,你应该知道了要把这一步放在哪里了吧?直接放在末尾?不不不,前面说了得活着才行,小明挂了就emmmmmm

所以此处你需要缩进,对吧?
while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉
        看视频

人生如此往复,直到被人按下了退出键。注意了,睡觉那一块会有个重置的操作,即把所有的动作均重置为 False,while True就会开启新的一天~否则将持续判断其它的内容
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-17 10:29:29 | 显示全部楼层
要求是根据密码表将密文解密为明文,但是执行后一直显示循环输入密码,请问是哪里出了问题?
code=('g','k','a','P','W','x','E','Q','f','t')
while True:
    d=''
    s=input('请输入密码:\n')
    if (s=='q'):
        break
    for i in range(len(s)):
        if s[i] in code:
            p=code.index(s[i])
            d+=str(p)
        else:
            d+='?'
print('明文是:'+d)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-17 10:45:17 | 显示全部楼层
没对齐好吧,print跟上面对齐试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-17 10:46:25 | 显示全部楼层

                               
登录/注册后可看大图

你是这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-17 10:48:04 | 显示全部楼层
        while True 是死循环,没有必要,去掉就好了。
code=('g','k','a','P','W','x','E','Q','f','t')
d=''
s=input('请输入密码:\n')
if s != 'q':
    for i in range(len(s)):
        if s[i] in code:
            p=code.index(s[i])
            d+=str(p)
        else:
            d+='?'
print('明文是:'+d)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-17 10:56:37 | 显示全部楼层
skyrimz 发表于 2021-1-17 10:45
没对齐好吧,print跟上面对齐试试

请问应该怎么判断应该跟哪里对齐呢?
经常因为对齐纠结很久写不出来……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-17 11:00:20 | 显示全部楼层
jackz007 发表于 2021-1-17 10:48
while True 是死循环,没有必要,去掉就好了。

谢谢 因为想要循环转译密码 所以可能还是需要保留while True   我自己也发现了是对齐的问题……请问应该怎么判断应该跟哪里对齐呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-17 12:15:40 | 显示全部楼层
本帖最后由 skyrimz 于 2021-1-17 12:17 编辑
AresFC 发表于 2021-1-17 10:56
请问应该怎么判断应该跟哪里对齐呢?
经常因为对齐纠结很久写不出来……


多试试就好了,各种结构要记住
比如你这一块代码都在while true这个循环中运行,那就这一块对齐

像我这种初学者觉得pycharm挺好用的,没有啥格式的问题,debug也很好用,哪里出问题debug一下基本就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-17 16:57:54 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Daniel_Zhang 于 2021-1-17 17:03 编辑
AresFC 发表于 2021-1-17 11:00
谢谢 因为想要循环转译密码 所以可能还是需要保留while True   我自己也发现了是对齐的问题……请问应该 ...


你有这个问题的话,说明你对程序的运行逻辑还是不太了解

其实你在写的时候,可以想一想每一句自己究竟在干什么。

比如说你的 while True,就是当你没有退出时,一直循环整个程序的主体,也就是你想要多次输入密文,直到你退出程序。

那么问题就来了,你想要每次输入之后,获得一次明文对吧?但是你一开始的写法,会一直要求你输入密文,直到退出程序,此时肯定就不是你想要的,所以你的 print 要有一个缩进,让它在 while True的判断下面,当 while True 的时候,获取指定的密文,输出对应的明文




总的来说,你在敲代码之前,要想好,你的逻辑关系是什么。比如说你上午要做的任务如下:起床,穿衣,刷牙洗脸,上厕所,洗手,吃饭,学习,睡觉。下面均为伪代码~

那么你就要想到,你只有起床了,你才能穿衣对吧?所以穿衣得在这个 if的条件下面,即有一个缩进,当满足 if 的条件时,才能穿衣。

if 起床:
        穿衣

因此,如图所示,其它的事情要在 if 的下面,不然你实现不了想要的目的

再接下来只需要满足穿衣的条件就可以去上厕所了(冬天冷,夏天就无所谓了

if 穿衣:
        上厕所

那么问题就来了,是不是上厕所以后你得洗手?如果没洗手,干别的,呕 所以你得有一个 if 在这里判断,如果你上厕所了,那么就要洗手,并且只有洗手之后,你才能刷牙洗脸

if 上厕所:
        洗手
        if 洗手:
                刷牙洗脸

然后刷牙洗脸之后,你才能吃饭,所以:
if 刷牙洗脸:
        吃饭

吃饭后学习,学习后午休,以此类推

小明一生坚持按照某一个顺序做事,直到放弃(退出,或者挂了)了
while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉

所以这一生持续判断自己有没有完成if 里面的条件,当完成了,才能进入 if,否则将反复循环,直到小明完成了 if

但是此时,一个令人难以抵挡住诱惑的事情发生了,小明很想看某个学习资料文件夹里面的 某知名男星龟兄的 视频!!! 管他呢,劳资不论有没有起床也能看,不论有没有吃饭也能看,不论有没有洗手也能看,不需要满足任何其他条件,唯一的条件就是,自己活着(一直在循环)

那么此时,你应该知道了要把这一步放在哪里了吧?直接放在末尾?不不不,前面说了得活着才行,小明挂了就emmmmmm

所以此处你需要缩进,对吧?
while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉
        看视频

人生如此往复,直到被人按下了退出键。注意了,睡觉那一块会有个重置的操作,即把所有的动作均重置为 False,while True就会开启新的一天~否则将持续判断其它的内容
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-17 17:54:33 | 显示全部楼层
Daniel_Zhang 发表于 2021-1-17 16:57
你有这个问题的话,说明你对程序的运行逻辑还是不太了解

其实你在写的时候,可以想一想每一句自己究 ...

这么一说清楚了不少!谢谢!!!
哈哈哈哈哈哈解释得超级生动形象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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