因此,我应该编写一个Python程序,该程序将以某个封闭的间隔[2,n](每行一个)识别并打印所有理想数。我们只需要使用嵌套的while循环/ if-else语句。我使用for循环以某种方式做到了,但使用while循环无法弄清楚。如果您能向我展示如何将我的代码转换为while循环,我将不胜感激。多谢你们。这是我所拥有的:
limit = int(input("enter upper limit for perfect number search: "))
for n in range(2, limit + 1):
sum = 0
for divisor in range(1, n):
if not n % divisor:
sum += divisor
if sum == n:
print(n, "is a perfect number")
Run Code Online (Sandbox Code Playgroud) 我必须制作一个替换密码程序,在那里我首先创建一个随机密钥,然后使用这个密钥来解密/加密一些用户输入(明文)。问题的约束如下:
encryptMsg(plaintext,key,alphabet) 以明文字符串、字母字符串和密钥字符串为参数,返回加密后的密码字符串。请注意,在此函数中,您必须首先将纯文本字符串转换为全部小写,并删除所有未出现在字母字符串中的标点符号/字符!
解密Msg(ciphertext,key,alphabet) 将取密文字符串、字母字符串和密钥字符串并返回明文字符串。
makeKey(alphabet) 通过随机打乱字母字符串参数中的字符来生成并返回一个密钥字符串。提示:这涉及将字符串转换为列表,使用 random.shuffle() 方法,然后将列表转换回字符串
这是我所拥有的:
import random
alphabet = "'abcdefghijklmnopqrstuvwxyz.,!'"
def makeKey(alphabet):
alphabet= list(alphabet)
key= random.shuffle(alphabet)
alphabet= str(alphabet)
return key
def encrypt(plaintext, key, alphabet):
"""Encrypt the string and return the ciphertext"""
return ''.join(key[l] for l in plaintext)
print (alphabet)
Run Code Online (Sandbox Code Playgroud)
我知道我在 makeKey 函数上做错了,因为它不起作用。我需要一些关于如何启动其他功能的帮助。我们不能使用字典,只能使用列表方法。任何关于在我的任务中快速启动我的帮助或建议将不胜感激。谢谢你们!
更新:示例输出如下:
字母:'abcdefghijklmnopqrstuvwxyz.,!'
键:'nu.t!iyvxqfl,bcjrodhkaew spzgm'
输入明文:嘿嘿,真好玩!
密文:'v! zmhvxdmxdmo!nll mikbg'
解密文本:'嘿,这真的很有趣!