我必须创建一个函数,该函数接收用户想要加密的消息并返回加密的字符串。加密遵循一系列规则:
到目前为止,这是我的代码。它只会返回'p^'
,所以我认为我的第一个if
语句和返回值有问题。如果有人能引导我朝着正确的方向前进,我会感激它!
def encryptMessage(secretMsg):
secretMsg = str(secretMsg)
u = secretMsg.upper()
symbol = "^"
for x in secretMsg:
if u in secretMsg:
return u.lower() + symbol
secretMsg += x
return secretMsg
if u.lower():
return secretMsg
elif 1 in secretMsg:
return secretMsg.replace(1, "@")
elif 2 in secretMsg:
return secretMsg.replace(2, "#")
elif 3 in secretMsg:
return secretMsg.replace(3, "$")
num = u > 3
if num in secretMsg:
return secretMsg.replace(num, "*")
return secretMsg
示例:
注意:这些是程序应返回的示例,而不是程序运行的实际实例。
>>> encryptMessage("my123password")
'my@#$password'
>>> encryptMessage("Dan()123Barrun")
'd^an**@#$b^arrun'
>>> encryptMessage("PASS99cats")
'p^a^s^s^**cats'
答案 0 :(得分:1)
让我们从顶部开始,继续努力。
首先,这不是加密。
这只是在文本中添加随机字符,而不是将数据转换为密文,然后可以通过密钥对其进行解密。如果有什么我称之为混淆。
现在我们已经解决了这个问题,让我们告诉你为什么你的代码无效。
def encryptMessage(secretMsg):
secretMsg = str(secretMsg)
u = secretMsg.upper()
symbol = "^"
for x in secretMsg:
if u in secretMsg:
return u.lower() + symbol # Your function stops here b/c return
secretMsg += x
return secretMsg # Use print() to display, return will stop your function.
# Nothing below here is executed because of the return above.
if u.lower(): # This is always True unless u is empty.
return secretMsg # Function will then stop here.
elif 1 in secretMsg: # This will raise an error, make that 1 a string
return secretMsg.replace(1, "@") # Same here
elif 2 in secretMsg: # here
return secretMsg.replace(2, "#") # here
elif 3 in secretMsg: # here
return secretMsg.replace(3, "$") # and here
num = u > 3 # This will return True if u > 3 or False if u <= 3, not any number greater than u.
if num in secretMsg:
return secretMsg.replace(num, "*")
return secretMsg
请通过this stackoverflow post或this video来研究退货声明。
由于您对反馈非常感激,因此我决定更进一步帮助您,并为您提供更好的方法来帮助您学习该课程。
import string # This module holds lists of characters that you would find useful.
def encryptMessage(original_message):
original_message = str(original_message)
secret_message = []
conversions = {"1": "@", "2": "#", "3": "$"}
for letter in original_message:
if letter in string.ascii_uppercase:
secret_message.append(letter.lower() + "^")
elif letter in '123':
secret_message.append(conversions[letter])
elif letter in string.ascii_lowercase:
secret_message.append(letter)
else:
secret_message.append("*")
return ''.join(secret_message)
如果您想知道变量conversions
是什么,则称为dictionary。
如果您想知道[]
括号表示的内容,则表示list。请注意,.append()
是一个函数,它在列表或兼容数据结构的末尾添加一个新元素,而''.join()
是一个将列表连接成一个字符串的函数。
如果你想知道我在用string.ascii_uppercase
做什么,我正在调用string
模块中定义的变量。有关模块的更多信息,请查看the documentation。
有关如何使用Python控制流语句的更多信息,请阅读here。