目录
1、编写一个程序,计算从两个字符串中移除的最少字母数,使它们成为变位词。变位词是指可以通过重新排列字符而形成的字符串。
4.编写一个程序,计算列表中每个元素的出现的次数,并以字典返回。
1、编写一个程序,计算从两个字符串中移除的最少字母数,使它们成为变位词。
变位词是指可以通过重新排列字符而形成的字符串。
例如,dab 是 bad 的变位词。
定义函数 min_removals_to_anagram(),有两个参数:str1 和 str2。
在函数内,计算从两个字符串中移除的最小字母数,使它们成为变位词。
示例输入 cab base 示例输出 3
解释:需要移除cab 中的c,base 中的s 和 e。最小移除数3,成为变位词ab 和 ba
from collections import Counter
def min_removals_to_anagram(str1,str2):
str3 = (str1+str2)
sum = 0
count = Counter(str3)
for i in str3:
if count[i] != 2:
sum += 1
return sum
str1 = input()
str2 = input()
print(min_removals_to_anagram(str1,str2))
2.编写一个程序,计算两个日期之间的天数。
导入datetime
模块。定义函数calculate_days_between()
数,其中有两个参数:(date1, date2)
,类型为字符串,格式为YYYY-MM-DD
。
在函数内,将字符串转换为datetime
对象,并计算date2
和date1
之间的差异,以天为单位。以天数的差异作为输出返回。
示例输入 2023-04-14 2023-04-20
示例输出 6
利用datetime
模块将日期字符串转为日期,注意考虑差值为负的情况,返回负数
from datetime import datetime
def calculate_days_between(date1, date2):
# 定义日期格式
date_format = "%Y-%m-%d"
# 将字符串转换为datetime对象
date1 = datetime.strptime(date1, date_format)
date2 = datetime.strptime(date2, date_format)
# 计算日期差异
delta = date2 - date1
# 返回天数差异
return delta.days # 使用abs()函数确保结果为正数
# 示例用法
date1 = input()
date2 = input()
days = calculate_days_between(date1, date2)
print(days)
3.编写一个程序,将二进制数转换为其十进制等效值。
定义函数binary_to_decimal(),它接受一个单独的列表参数binary_list。
在函数内部实现从二进制到十进制的转换逻辑。 返回二进制数的十进制等效值。
示例输入 1 0 1 0 1 0 1 1 示例输出 171
def binary_to_decimal(binary_list):
decimal_value = 0
# 计算二进制对应的十进制值
for i in range(len(binary_list)):
# 将字符转换为整数,计算对应的十进制值
decimal_value += binary_list[i] * (2 ** (len(binary_list) - 1 - i))
return decimal_value
# 获取用户输入的8位二进制数,并转换为列表
binary_input = input()
binary_list = [int(bit) for bit in binary_input.split()]
# 确保输入是8位二进制数
if any(bit not in [0, 1] for bit in binary_list):
print("输入无效,请确保输入是8位二进制数(仅包含0和1)。")
else:
# 调用函数并打印结果
decimal_value = binary_to_decimal(binary_list)
print(decimal_value)
4.编写一个程序,计算列表中每个元素的出现的次数,并以字典返回。
定义函数count_frequency()
,该函数接受一个元素列表lst
作为参数。
在函数内部,返回一个字典,其中列表的元素作为键,其相应的次数作为值。
示例输入 run jump run swim swim run run
示例输出 {'run': 4, 'jump': 1, 'swim': 2}
def count_frequency(str1):
frequency_dict = {}
for i in str1.split():
if i not in frequency_dict:
frequency_dict[i] = 1
else:
frequency_dict[i] +=1
return frequency_dict
str1 = input()
print(count_frequency(str1))
5.
编写一个程序将字符串转换为字典。
定义函数convert_str_list_to_dict()
,参数为str_list
(输入的字符串)。
在函数内部,创建一个字典,其中每个字符串使用=
进行分割,第一部分为键,第二部分为值。
返回字典。
示例输入5=Five 6=Six 7=Seven
示例输出{'5': 'Five', '6': 'Six', '7': 'Seven'}
def convert_str_list_to_dict(infromation):
numbers = {}
for i in information.split():
s, t = i.split("=")
numbers[s] = t
return numbers
information = input()
print(convert_str_list_to_dict(information))
6.编写一个程序来交换字典的键和值。
定义函数swap_dict()
,参数为一个字典dict
。
在函数内部,反转给定字典的键和值。如果一个值出现多次,将对应键组合在一个列表中。
示例输入{'Pizza': 'Food', 'Pasta': 'Food', 'Water': 'Drink', 'Coke': 'Drink'}
示例输出{'Food': ['Pizza', 'Pasta'], 'Drink': ['Water', 'Coke']}
解释: 输入中Food
的值出现多次,因此Food的键被保留在一个列表中['Pizza','Pasta']
。
def swap_dict(dict):
# 此处编写代码
swapped_dict = {}
# 遍历输入字典的每一对键值对
for key, value in dict.items():
# 如果值已经在新字典中,则将当前的键加入对应的列表
if value in swapped_dict:
swapped_dict[value].append(key)
else:
# 否则,将该值作为新键,并把键放到一个列表中
swapped_dict[value] = [key]
return swapped_dict
# 读取输入的字典
dict = eval(input())
# 调用函数
print(swap_dict(dict))
以上代码不唯一,仅供参考。