你需要自己做作业(或者学习编程没有意义),如果你不明白这个问题,你应该问你的老师澄清。
也就是说,换档原则上非常简单。你可以用手来做。如果你有一个字母,比如 A,将其移动 1(key = 1)会将其转换为 B。在作业中,您移动 2 个位置,因此 A 将变为 C,B(在原始单词中)将变为 D等等。你必须小心字母表的结尾。移位 1 时,Z 变为 A。移位 2 时,Y 变为 A,Z 变为 B。
因此,在您的示例中,HELLO 变为 JGNNQ,因为在移动 2 个位置时:
H => J
E => G
L => N
O => Q
(注意:为了便于阅读,我使用大写字母,但您的作业似乎是关于处理小写字符。我假设您只被要求处理小写字母。)
你怎么做到这一点?查看您获得的链接。基本上 ord() 将一个字符转换为一个整数,而 chr() 将一个这样的整数转换为一个字符。它基于字符在计算机中表示为数字的方式。所以对于一个给定的字符,如果你把它转换成它的ord(),你可以添加键来移动它,然后用chr()把它转换回一个字符。
对于从 Y 和 Z 到 A 和 B 的包装,您可以为此使用模运算符 (%),但要小心,这有点繁琐(您需要计算角色的排序和 'a' 的排序之间的差异,应用 % 26 (它给你一个介于 0 和 25 之间的数字),然后将它添加到 ord('a) 以获得正确的 ord)。如果它太复杂,只需使用几个 IF 即可。
我建议从一个小程序开始,它接受用户的输入并打印输出以检查它是否正常工作。在最终版本中您不需要输入和打印,但它会帮助您测试您的转换代码是否正常工作。
然后你有关于从文件读取和写入文件的部分。您的作业不要求用户输入,而是从文件中读取。您的行with open ("word-text.txt","r") as f:
看起来不错,这应该为您提供读取数据所需的文件句柄。您可以使用 f.read() 读取数据并将其分配给变量。我不确定你学到了什么,但我会将字符串拆分成单词,<string>.split()
从而创建一个字符串列表(你的单词)。
然后对于每个单词,您使用之前编写的代码来移动字符串,您可以将原始单词和移位的单词都写入输出文件。最简单的可能是从打开输出文件(以写入模式)开始,然后通过在列表上循环来一次性完成移位和写入。