有人可以解释一下这个简单的python代码吗?

Posted

技术标签:

【中文标题】有人可以解释一下这个简单的python代码吗?【英文标题】:could someone please explain this simple python code? 【发布时间】:2013-09-30 16:02:08 【问题描述】:

我已经进入 GCSE 计算课程几周了,现在是 9 年级。今天我们学习了一个简单的加密程序。我不是很了解它。请有经验的python程序员简单地解释一下这段代码吗?

顺便说一句 - 我已经根据我理解的代码段发表了评论。

message = str(input("Enter message you want to encrypt: ")) #understand
ciphered_msg = str() #understand
i = int() #understand
j = int() #understand
n = int(3)

for i in range(n):
    for j in range(i, len(message), n):
        ciphered_msg = ciphered_msg + message[j]

print(ciphered_msg) #understand

请帮我解决这个问题,因为我真的很想了解更多的 Python 知识并在考试中获得 A*。

我知道 for 循环是如何工作的,但我就是不明白这个是如何工作的。

谢谢!

【问题讨论】:

您是否尝试过运行此代码来查看它的作用? 这段代码不是很好。但是,如果您不了解代码,则要做的就是查找这些部分,然后自己尝试一下以了解它们的作用。请别人解释或参加讲座不太可能有很大帮助。 这是学习使用诸如 idle 或 python eric 之类的调试器的好时机。使用调试器逐行单步调试代码,看看它做了什么。 顺便说一句,这是糟糕的python代码。 i = int()j = int() 只是表明作者不懂python。它们在 for 循环中被完全替换,根本不应该存在。看起来像一个不明白的 C 程序员。 @user2816683 那么不幸的是,您的老师似乎不太了解 Python。对于那个很抱歉。 (因为你已经 9 岁了,希望你已经过了认为所有成年人都不会犯错的阶段......) 【参考方案1】:

这些行不是 Pythonic,你不应该这样做:

ciphered_msg = str()
i = int()
j = int()
n = int(3)

相反,它是完全等效的代码,但更简单、更清晰:

ciphered_msg = ""
i = 0 # unnecessary, the i variable gets reassigned in the loop, delete this line
j = 0 # unnecessary, the j variable gets reassigned in the loop, delete this line
n = 3

循环执行以下操作:从0 开始,然后是1,最后是2,它获取消息长度中的每三个索引并访问message 数组中的相应位置,附加字符在该位置并将结果累积到 ciphered_msg 变量中。例如,如果message 的长度为5,则message 中的索引将按以下顺序访问:

0 3 1 4 2

所以基本上我们是在打乱输入 message 中的字符 - 例如,如果输入是 abcde,则输出将是 adbec。这是一个非常弱的密码,它只是转换字符:

# input
0 1 2 3 4 # original indexes
a b c d e # `message` variable

# output
0 3 1 4 2 # scrambled indexes
a d b e c # `ciphered_msg` variable

【讨论】:

抱歉,我不小心放了“数字”而不是消息 @user2816683 现在很清楚发生了什么,请参阅我的更新答案

以上是关于有人可以解释一下这个简单的python代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释一下这个 c++ 代码有啥问题并提供解决方案吗

Python socket Recv 无法正常工作,有人可以解释一下吗

有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]

java中的数据源是啥?有人可以用简单的语言解释一下吗?

有人可以解释一下这个与 Js 回调函数有关的代码吗?我对这段代码很困惑,可能是因为我是初学者。问题是:

有人可以解释这个从档案中提取特定文件的批处理代码吗