Python编程实践:数据处理与算法实现

90、修改 PDB 文件读取器,使其忽略 PDB 文件中的空行和注释行。空行是指仅包含空格和制表符的行(即查看时看起来为空的行),注释是指以关键字 CMNT 开头的任何行。

以下是修改后的 Python 代码示例,用于实现忽略空行和注释行的功能:

with open('your_pdb_file.pdb', 'r') as pdb_file:
    for line in pdb_file:
        line = line.strip()
        if line and not line.startswith('CMNT'):
            # 处理非空且非注释行的逻辑
            print(line)

这段代码会打开指定的 PDB 文件,逐行读取内容,去除每行首尾的空白字符,然后检查该行是否为空或是否以 'CMNT' 开头。如果都不满足,则对该行进行处理(这里只是简单打印,你可以根据实际需求修改处理逻辑)。

91、编写一个名为 find_dups 的函数,该函数接受一个整数列表作为输入参数,并返回该列表中出现两次或更多次的整数集合。

以下是实现该功能的 Python 代码:

def find_dups(lst):
    seen = set()
    duplicates = set()
    for num in lst:
        if num in seen:
            duplicates.add(num)
        else:
            seen.add(num)
    return duplicates

92、Python的集合对象有一个名为pop的方法,该方法会移除并返回集合中的一个任意元素。例如,如果集合gerbils中有五只可爱的小动物,那么调用gerbils.pop()五次将逐个返回这些动物,最后使集合为空。请使用此方法编写一个名为mating_pairs的函数,该函数接受两个大小相等的集合males和females作为输入,并返回一个由配对组成的集合;每对必须是一个包含一只雄性和一只雌性的元组。(males和females的元素可以是包含沙鼠名字或沙鼠ID号的字符串 —— 你的函数必须对这两种情况都适用。)

以下是实现 mating_pairs 函数的 Python 代码:

def mating_pairs(males, females):
    pairs = set()
    while males and females:
        male = males.pop()
        female = females.pop()
        pairs.add((male, female))
    return pairs

93、PDB文件格式常用于存储分子信息。一个PDB文件可能包含零个或多个以单词AUTHOR(可以是大写、小写或混合大小写)开头的行,后面跟着空格或制表符,再后面是创建该文件的人的姓名。编写一个函数,以文件名列表作为输入参数,并返回在这些文件中找到的所有作者姓名的集合。

以下是实现该功能的Python代码:

def get_authors(filenames):
    authors = set()
    for filename in filenames:
        try:
            with open(filename, 'r') as file:
                for line in file:
                    line = line.strip().lower()
                    if line.startswith('author'):
                        author_name = line[6:].strip()
                        if author_name:
                            authors.add(author_name)
        except FileNotFoundError:
            continue
    return authors

94、字典中的键保证是唯一的,但值不是。编写一个名为count_values的函数,它接受一个字典作为参数,并返回该字典中不同值的数量。例如,给定输入{‘red’: 1, ‘green’: 1, ‘blue’: 2},它应该返回2。

以下是实现该功能的Python代码:

def count_values(dictionary):
    return len(set(dictionary.values()))

95、在进行了一系列实验后,整理出一个字典,该字典显示了检测到某些类型亚原子粒子的概率。粒子的名称是字典的键,概率是字典的值,例如 {‘neutron’: 0.55, ‘proton’: 0.21,’meson’: 0.03,’muon’: 0.07, ‘neutrino’: 0.14}。编写一个函数,以这种类型的单个字典作为输入,并返回最不可能被观测到的粒子。例如,对于上述字典,函数应返回’m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值