编写80个暗语,每个暗语用一个两位数代表,为了进一步提高保密性,又对数字做了顺序替换。本次的传递的信息是:“萝卜1.43元、白菜0.89元、芹菜2.56元、韭菜3.82元”,已经知道,顺序替换方式是平移4个位置(如:0替换为4,……,9替换为3)。请提取信息中的数字,并还原成原始数字后,输出一个新的字符串。设计一个python程序
时间: 2023-05-25 13:04:20 浏览: 64
message = "萝卜54.87元、白菜09.33元、芹菜62.00元、韭菜79.26元"
# 将数字进行顺序替换
def replace_number(num):
num_str = str(num)
replace_dict = {'0':'4', '1':'5', '2':'6', '3':'7', '4':'8', '5':'9', '6':'0', '7':'1', '8':'2', '9':'3'}
replace_str = ''
for digit in num_str:
replace_str += replace_dict[digit]
return int(replace_str)
# 提取信息中的数字
numbers = []
for i in range(len(message)):
if message[i].isdigit() or message[i] == '.':
j = i
while j < len(message) and (message[j].isdigit() or message[j] == '.'):
j += 1
num_str = message[i:j]
num = float(num_str)
num_replaced = replace_number(int(num * 100))
numbers.append(num_replaced)
# 还原成原始数字
orig_numbers = []
for num in numbers:
orig_num_replaced = replace_number(num)
orig_num = round(orig_num_replaced / 100, 2)
orig_numbers.append(orig_num)
# 输出新的字符串
new_message = ''
num_index = 0
for i in range(len(message)):
if message[i].isdigit() or message[i] == '.':
new_message += str(orig_numbers[num_index])
num_index += 1
j = i
while j < len(message) and (message[j].isdigit() or message[j] == '.'):
j += 1
i = j - 1
else:
new_message += message[i]
print(new_message)