[英]Function isn't called properly?
我有凱撒密碼加密的代碼,我正在嘗試在fancy_caesar()
function 中調用cleanup()
function,以便“清理”輸入關鍵字和消息。
#with just .upper()
my_string = ''
def string():
my_string = input("Enter your string: ")
res = cleanup()
print(res)
def cleanup(self):
res = ''
_char = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
lower_char = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
all_char = _char + lower_char
for ch in my_string:
if ch in all_char:
res += ch
return (res.upper())
def swap(x, i, j):
i, j = sorted((i, j))
if i and j in range(len(x)):
return x[:i] + x[j] + x[i+1:j] + x[i] + x[j+1:]
else:
return None
def inputs():
x = input('Enter your string: ')
i = int(input('Enter the index of the first letter: '))
j = int(input('Enter the 2nd index of the next letter: '))
print(swap(x, i, j))
#print(swap(x, i, j))
def fancy_caesar(message, keyword, true_false_statement):
count = 0
while count == 0:
true_false_statement = str(input("Type True if you want to encrypt.\nType false if you want to decrypt: "))
if true_false_statement == 'true' or true_false_statement == 'True' or true_false_statement == 't' or true_false_statement == 'T':
count = count +1
elif true_false_statement == 'false' or true_false_statement == 'False' or true_false_statement == 'F' or true_false_statement == 'f':
count = count + 1
else:
print('None')
alphabet = 'abcdefghijklmnopqrstuvwxyz'
translated_message = ""
keyword_index = 0
for character in message:
if character in alphabet:
number = alphabet.find(character)
if true_false_statement == 'true' or true_false_statement == 'True' or true_false_statement == 't' or true_false_statement == 'T':
number = number + (ord(keyword[keyword_index]) - ord('a'))
elif true_false_statement == 'false' or true_false_statement == 'False' or true_false_statement == 'F' or true_false_statement == 'f':
number = number - (ord(keyword[keyword_index])) - ord('a')
keyword_index += 1
keyword_index = keyword_index % len(keyword)
if number >= len(alphabet):
number = number - len(alphabet)
elif number < 0:
number = number + len(alphabet)
translated_message = translated_message + alphabet[number]
else:
translated_message = translated_message + character
return (translated_message)
def main():
message = input("Enter string you want to encrypt/decrypt: ")
keyword = input('Keyword for encryption: ')
true_false_statement = ''
translated_message = fancy_caesar(message, keyword, true_false_statement)
print(translated_message)
main()
我嘗試將self
添加到cleanup()
function 中,但它根本不起作用,因為我在輸出中除了空白外沒有得到任何東西。
def fancy_caesar(message, keyword, true_false_statement):
message = cleanup(message)
keyword = cleanup(keyword)
count = 0
while count == 0:
我嘗試在main()
function 中調用cleanup()
,我得到了相同的結果。
這可能是由於def string()
中未調用my_string
我最終將它排除在cleanup()
function 之外,以便我將 function 用於fancy_caesar
。 我可以獲得解決這些問題的任何提示嗎?
output 應該導致輸入字符串全部大寫,沒有空格或特殊字符,這是由cleanup
function 完成的。
cleanup()
應該將要清理的字符串作為參數。
def cleanup(my_string):
res = ''
_char = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
lower_char = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
all_char = _char + lower_char
for ch in my_string:
if ch in all_char:
res += ch
return (res.upper())
然后你像這樣使用它:
some_string = cleanup(some_string)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.