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

Python编程实训:集合操作与自然数系统实现,
本文介绍了使用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 
本文章已经生成可运行项目
### Educoder Java 实训教程和资源 #### Educoder平台上的Java实训概述 Educoder是一个提供在线编程实践课程的教育平台,在这里可以找到一系列针对不同层次学习者的Java实训项目。这些项目旨在帮助学生通过实际操作来掌握Java编程技能。 #### 初步体验Java编程环境设置 对于刚开始接触Java的新手来说,可以通过完成`HelloWorld.java`这样的简单程序来熟悉开发工具链以及基本语法[^1]: ```java package key; public class HelloWorld { public static void main(String[] args){ System.out.println("hello eduCoder"); } } ``` 这段代码展示了如何创建一个最基础的Java应用程序,并打印一条消息到控制台。 #### 变量与数据类型的运用实例 当进一步深入理解变量的概念及其作用时,则会遇到像下面这样定义字符串型别的例子[^2]: ```java package chapter2.step1; public class HelloWorld{ public static void main(String[] args){ String love = "www.educoder.net"; System.out.println(love); } } ``` 此片段说明了怎样声明并初始化一个String对象用于存储网址链接的信息。 #### 掌握条件判断语句-if...else结构 为了使程序能够根据不同情况作出响应,if...else语句是非常重要的逻辑构建模块之一。例如,在处理用户输入验证或其他决策流程方面非常有用[^3]: 虽然具体的实现细节未在此处展示,但是这类题目通常涉及根据给定条件执行不同的代码路径.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值