【发布时间】:2015-04-23 13:31:27
【问题描述】:
在 match_letters 函数中,使用 'place = string.index(letter)' 我不断收到相同的错误 'Value Error: tuple.index(x): x not a tuple。有谁知道如何解决这个问题?将不胜感激:) 谢谢
def freq_analysis():
""" Summary: Perform a frequency analysis on a string
Paramaters: text - The text to analyse
Returns: A string containing the deciphered text
"""
text = input("enter text")
letterCount = getLetterCount(text)
Letter_Count_Tuple,new_letter_count,descending = descending_order(letterCount)
ETAOIN = "ETAOINSHRDLCUMWFGYPBVKJXQZ"
string = descending_order(letterCount)
finish = match_letters(ETAOIN, string,text)
def getLetterCount(text):
letterCount = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0, 'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0, 'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0}
for letter in text.upper():
if letter in letterCount:
letterCount[letter] += 1
print("Letter count is",letterCount)
return letterCount
def descending_order(letterCount):
Letter_Count_Tuple = letterCount.items()
new_letter_Count = sorted(Letter_Count_Tuple, key = get_number)
print("new letter count is",new_letter_Count)
descending = new_letter_Count[::-1]
print("descending is",descending)
string = ""
for le in descending:
string = string + le[0]
print("String is",string)
return Letter_Count_Tuple, new_letter_Count, string
def get_number(Letter_Count_Tuple):
return Letter_Count_Tuple[1]
def match_letters(ETAOIN,string,text):
# loop over each leter in the encrypted text
# find the position of that letter in your observed descending order string
# replace it with the letter in the same position from the etaoin descending order string
finish = ""
for letter in text:
place = string.index(letter)
ETAOIN_place = ETAOIN[place]
for le in ETAOIN_place:
finish = finish + le
print(finish)
频率分析()
Traceback:
Message File Name Line Position
Traceback
<module> <module1> 54
freq_analysis <module1> 13
match_letters <module1> 47
ValueError: tuple.index(x): x not in tuple
【问题讨论】:
-
你能复制/粘贴完整的回溯吗?
-
这里有一个指向 pastebin 的链接,因为它不能很好地粘贴,谢谢 :)pastebin.com/SCTnXube
-
只需使用正确的格式将其添加到您的问题中......这将使其更具可读性
-
你也应该修复你正在显示的代码中的缩进
-
完成 :) 感谢您的提示
标签: python encryption tuples frequency frequency-analysis