python初学者练习题----列表,字典

目录

1、编写一个程序,计算从两个字符串中移除的最少字母数,使它们成为变位词。变位词是指可以通过重新排列字符而形成的字符串。

2.编写一个程序,计算两个日期之间的天数。

3.编写一个程序,将二进制数转换为其十进制等效值。

4.编写一个程序,计算列表中每个元素的出现的次数,并以字典返回。

5.编写一个程序将字符串转换为字典。

6.编写一个程序来交换字典的键和值。


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对象,并计算date2date1之间的差异,以天为单位。以天数的差异作为输出返回。

示例输入 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))

 以上代码不唯一,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Swallow_L02

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值