【头歌educoder】离散数学实训参考-第一章-集合

本文介绍了使用Python进行集合操作的四个关卡,包括独特单词提取、回文单词对查找、幂集计算和笛卡尔乘积。同时,详细阐述了自然数系统的实现,涉及类方法重载以支持加法、乘法、转换为阿拉伯数字等操作,以及利用foldn函数的不同实现。
该文章已生成可运行项目,

目录

1. 集合及其基本运算的实现

第一关:set简单应用

第二关:《仲夏夜之梦》中的回文单词对

第三关:求幂集 

第四关:计算n个集合的笛卡尔乘积

2. 自然数系统

第一关:NaturalNumber的输出 

第二关:NaturalNumber的加法

第三关:NaturalNumber的乘法

第四关:将NaturalNumber转换为阿拉伯数字

第五关:后继函数

第六关:foldn构建自然数

第七关:另一种foldn表示自然数

自然数系统代码总和


        本人没有系统学过离散数学,完成这些实训仅仅是在熟悉python。


  

1. 集合及其基本运算的实现

第一关:set简单应用

  • 任务简述:读取文本并输出第一次出现的单词

  • 总体思路:读取一个单词后,判断是否已经出现过

  • 相关知识:集合及其方法的使用、文件读取

  • 关卡难度:0.5

def readAndPrintUniqueWords(filename):
    infile = open(filename, 'r')
    #**********  Begin  **********#
    #请在此区间内编程完成函数代码

    s = set()  # 空集合
    for line in infile.readlines():
        if line.strip() not in s:  # 如果此行单词未出现过
            s.add(line.strip())
            print(line.strip())

    #请在此区间内编程完成函数代码
    #**********  End  **********#
    infile.close()

第二关:《仲夏夜之梦》中的回文单词对

  • 任务简述:将所有长度大于等于5,且该单词的字母反序单词也出现在了全部找出
  • 总体思路:单词读出于一列表;集合化;从集合中去除不满足的单词
  • 相关知识:字符串分割与切片、集合及其remove方法、文件读取
  • 关卡难度:1
def shakeSpeare(filename):
    #**********  Begin  **********#
    #请在此区间内编程实现函数功能

	words = None
    with open(filename, 'r') as f:
		text = f.read()
		words = text.split(' ')  # 数组
	# 集合化
	reverse = set(words)
    # 要对words迭代,而不是reverse
	for word in words:
        # 先判断单词是否在集合里,不然set::remove()可能报错
		if word in reverse:
            # 字符串切片来表回文
			if word[::-1] not in reverse or len(word) < 5:
				reverse.remove(word)

    #请在此区间内编程实现函数功能
    #**********  End  **********#
    return reverse

第三关:求幂集 

  • 任务简述:返回一个集合的幂集,是一个以frozen集合为元素的集合
  • 总体思路:幂集中的元素分为两类:包含e的、不包含e的(e为原集合中任意元素)
  • 相关知识:frozenset的使用,递归(函数内调用函数自身)
  • 关卡难度:1.5
def powSet(S):
    #**********  Begin  **********#
    #请在此区域内编程																						
	# 空集的幂集														
    if not S:
        return 
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值