有人可以解释一下这个简单的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代码吗?的主要内容,如果未能解决你的问题,请参考以下文章
Python socket Recv 无法正常工作,有人可以解释一下吗
有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]