AresFC 发表于 2021-1-17 10:28:58

关于密码解密的提问

问题放在二楼!

AresFC 发表于 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 in code:
            p=code.index(s)
            d+=str(p)
      else:
            d+='?'
print('明文是:'+d)

skyrimz 发表于 2021-1-17 10:45:17

没对齐好吧,print跟上面对齐试试

skyrimz 发表于 2021-1-17 10:46:25

https://img-blog.csdnimg.cn/20210117104602343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NreXIxbVo=,size_16,color_FFFFFF,t_70#pic_center
你是这个意思吗?

jackz007 发表于 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 in code:
            p=code.index(s)
            d+=str(p)
      else:
            d+='?'
print('明文是:'+d)

AresFC 发表于 2021-1-17 10:56:37

skyrimz 发表于 2021-1-17 10:45
没对齐好吧,print跟上面对齐试试

请问应该怎么判断应该跟哪里对齐呢?
经常因为对齐纠结很久写不出来……

AresFC 发表于 2021-1-17 11:00:20

jackz007 发表于 2021-1-17 10:48
while True 是死循环,没有必要,去掉就好了。

谢谢 因为想要循环转译密码 所以可能还是需要保留while True   我自己也发现了是对齐的问题……请问应该怎么判断应该跟哪里对齐呢

skyrimz 发表于 2021-1-17 12:15:40

本帖最后由 skyrimz 于 2021-1-17 12:17 编辑

AresFC 发表于 2021-1-17 10:56
请问应该怎么判断应该跟哪里对齐呢?
经常因为对齐纠结很久写不出来……

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

像我这种初学者觉得pycharm挺好用的,没有啥格式的问题,debug也很好用,哪里出问题debug一下基本就知道了

Daniel_Zhang 发表于 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 的下面,不然你实现不了想要的目的

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

if 穿衣:
        上厕所

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

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

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

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

小明一生坚持按照某一个顺序做事,直到放弃(退出,或者挂了)了

while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉

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

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

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

所以此处你需要缩进,对吧?{:10_268:}

while True:
        if 起床:
                穿衣
                if 穿衣:
                        上厕所
                        if 上厕所:
                                洗手
                                if 洗手:
                                        洗脸刷牙
                                        if 洗脸刷牙:
                                                吃饭
                                                if 吃饭:
                                                        学习
                                                        if 学习:
                                                                睡觉
        看视频

人生如此往复,直到被人按下了退出键。注意了,睡觉那一块会有个重置的操作,即把所有的动作均重置为 False,while True就会开启新的一天~否则将持续判断其它的内容{:10_254:}
               

AresFC 发表于 2021-1-17 17:54:33

Daniel_Zhang 发表于 2021-1-17 16:57
你有这个问题的话,说明你对程序的运行逻辑还是不太了解

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

这么一说清楚了不少!谢谢!!!
哈哈哈哈哈哈解释得超级生动形象{:10_268:}
页: [1]
查看完整版本: 关于密码解密的提问