卡码网语言基础课(python版)
文章平均质量分 86
此专栏为卡码网语言基础课的python教程,包含对每一道题目的详细解读和相关知识点的具体介绍,适合0基础的python学员
vans顺意
这个作者很懒,什么都没留下…
展开
-
【卡码网Python基础课 21.图形的面积】
如果子类的对象调用一个方法,发现并没有提供这个方法,就会从当前对象的父类中寻找,如果父类中有则直接调用父类中的方法,如果还没有,就从父类的父类中寻找,就好像,当父亲和儿子都拥有一样东西,会优先使用自己的,如果发现自己没有,才会使用继承的方法。使用封装,我们隐藏了类的一些属性,具体的做法是使用getter方法获取属性,使用setter方法设置属性,如果希望属性是只读的,则可以直接去掉setter方法,如果希望属性不能被外部访问,则可以直接去掉getter方法。输入包括多行,每行包含一个图形的描述。原创 2024-08-19 22:16:03 · 1129 阅读 · 0 评论 -
【卡码网Python基础课 20.排队取奶茶】
队列已经构建完毕,接下来需要接收数字 m 和 m 个整数的输入,表示取奶茶的操作,如果数字为 1,表示有人取走了奶茶,即出队操作,如果数字为 2,表示有人新加入了奶茶队列,即入队操作,这种“如果”的条件,需要使用到if-else结构。队列,顾名思义,和排队的队列结构是类似的,在排队的过程中,想要加入队列,需要在队伍的最后一位(也被称为队尾)入队,想要离开队列,需要从队伍的第一位(也被称为队头)出队。输出只有一行,为下一个取奶茶的人。获取队列的长度,即队列中元素的数量,通常使用列表的len()函数来获取。原创 2024-08-19 16:23:37 · 981 阅读 · 0 评论 -
【卡码网Python基础课 19.洗盘子】
栈这种结构只能在一侧(栈顶那一侧)进行插入和删除操作,而且是后进先出 LIFO(后进入栈的元素离栈顶比较近,先出来),允许进行插入和删除的那一端是栈顶,与之对应的另一端是栈底,如果一个栈不包含任何元素,这个栈被称为空栈。接下来接收 m 和 m 个整数的输入,表示对盘子的操作,如果数字为 1,表示盘子被拿去清洗,即出栈操作,如果数字为 2,表示有新的盘子加入到待清洗区域中,即入栈操作。如果是操作 2,那么该行有两个数字,第一个数字 2 表示有未洗的盘子加入,第二个数字代表未洗的盘子编号。原创 2024-08-18 20:39:43 · 1156 阅读 · 0 评论 -
【卡码网Python基础课 18.开房门】
我们常常把map称之为映射,就是将一个元素(通常称之为key键)与一个相对应的值(通常称之为value)关联起来,比如说一个学生的姓名(key)有与之对应的成绩(value),它们是一一对应的,就好像一把钥匙开一扇门,在map中键是唯一的,也只有一个唯一的确定的值。比如下面的图示:左边是 key, 每一个姓名都对应着一个 成绩 value。而在Python中,通常用**字典dict**实现了映射这种数据结构。"tom": 98,原创 2024-08-18 16:31:07 · 780 阅读 · 0 评论 -
【卡码网Python基础课 17.判断集合成员】
2.移除元素:使用remove()或者discard()方法可以从集合中移除指定元素, 它们之间的区别在于当移除一个集合中不存在的元素时,remove()会引起异常,而discard()不会。最后一行包含一个整数 n,表示需要进行判断的目标整数,可以使用in进行判断,如果在集合中,输出Yes, 如果不在集合中,输出No。类似于列表的读取,这里需要读取一行作为字符串,将之拆分成列表,并转为整数,最后使用set()转换成整数集合。集合最常见的用法是判断某个元素是否在集合中和去除集合中的重复元素。原创 2024-08-17 21:12:40 · 533 阅读 · 0 评论 -
【卡码网Python基础课 16.出现频率最高的字母】
这需要先初始化一个字符的最大出现频率,然后头开始遍历,逐一比对当前字符出现的频次和最大频率的大小,如果当前字符出现的频次大于最大值,则更新最大值为当前字符出现的频次,这样完整遍历一遍后,就能找到字符的最大出现频率。当循环结束后,已经找到出现频率最大字符的频次以及对应的索引i,将 'a’对应的 Unicode 码值 加上 索引值,就是出现频率最大的字符的 Unicode 码值,再经过chr()函数转换,就能得到最终的结果。如果多个键映射到相同的索引,它们都可以存储在这个位置的列表中。原创 2024-08-17 16:51:46 · 924 阅读 · 0 评论 -
【卡码网Python基础课 15.链表的基础操作3】
我们可以假设这样一个场景:在传递情报过程中,A 的下线是 B , 也就是A.next = B, 现在我们要引入一个 C 充当 A 和 B 之间的中间人,新的关系是 A 的下线是 C , C 的下线是 B,我们可以直接将 C 的next指向 B,但是 B 无法直接表示,之前是用A.next来表示 B 的,即C.next = A.next, 然后再将 A 的next指向 C , 即A.next = C,这样就将新的关系构建完成了。每组第一行输出构建的链表,链表元素中用空格隔开,最后一个元素后没有空格。原创 2024-08-16 22:01:29 · 729 阅读 · 0 评论 -
【卡码网Python基础课 14.链表基础操作2】
上面的操作完成之后,链表就成功构建了,我们需要根据题目要求读取 k 个 m ,并输出这 k 个值, 如果输入的 m 是一个小于等于 0 的数或者 m 大于链表的长度,则无法找到第 m 个节点,判定 m 位置不合法,输入对应的语句。和上一节内容相似,依旧需要使用for 循环,迭代读取 n 个整数,然后使用之前定义的insert函数将新的链表节点插入到链表尾部,从而根据读入的数据构建一个完整的链表。然后我们需要读取 n 和 k,n 表示需要构建的链表的长度,k 代表输入的 m 的个数,并构建一个新的链表。原创 2024-08-15 20:14:17 · 448 阅读 · 0 评论 -
【卡码网Python基础课 13.链表的基础操作1】
那在 Python 语言中如何定义链表节点呢,由链表节点的概念我们可以知道,一个链表节点包含一个数据元素和一个指向下一个节点的指针,即包括一个数据字段和一个节点字段,初始化一个新节点,其next通常不存在,即一个空值,None 可以用于初始化或重置对象的属性,以表明属性当前为空或者没有设置,新创建的节点其 next 都为None# 定义链表节点类# init方法,初始化属性self.data = data # 存储节点的数据self.next = None # next指针初始化为None。原创 2024-08-14 22:42:37 · 1212 阅读 · 0 评论 -
【卡码网Python基础课 12.位置互换】
所以a, b = b,a这种操作实际上是将,b 和 a 的值构成一个元组 (b, a),然后使用元组解构(“拆包”)将这个元组中的值分别赋给 a 和 b,这样就完成了交换。接着,我们需要遍历字符列表,并将当前字符和下一位字符两两交换,当完成第一位和第二位的交换之后,我们应该控制迭代的步数为 2,执行第三位和第四位的交换。除了上面的操作外,元组还有一个“拆包”的功能,元组拆包是指将元组中的元素分别赋值给多个变量的过程,听起来很不知所云,但是示例却十分简单。输入的第一行是一个整数n,表示有测试数据。原创 2024-08-14 12:00:11 · 894 阅读 · 0 评论 -
【卡码网Python基础课 11.句子缩写】
虽然上段代码能完成题目,但是在判定字符是否是小写形式的部分重复了一段。# 如果首字母是小写,转换成大写else:# 判定新单词的首字母是否是小写,小写则转换成大写else:如果后面还需要小写字符转换成大写字符,那么还需要再写,这种情况下可以自己创建函数(用户自定义函数),将代码模块化,并在合适的地方重用,从而增加代码的复用性和可维护性,下面我们就尝试写一个将小写字符转换成大写字符的函数。def 函数名(形参列表) : 函数体。原创 2024-08-13 22:00:35 · 815 阅读 · 0 评论 -
【卡码网Python基础课 10.平均绩点】
也就是说,我们可以采用这样一种思路,事先给每一行字符串一个“真的令牌”,字符串遍历处理过程中,如果有哪一行字符串中有{A, B, C, D, F}以及空格之外的字符,则把“真令牌”替换成“假令牌”,这样当走出循环之后再进行输出处理时,就会因为不认识这个“假令牌”而不进行输出。如果是A则转换成4分,B转换成3分,C转换成2分,D转换成1分,F转换成0分,如果输入的内容不在{A, B, C, D, F}中,则输出Unknown, 对用不同的情况需要使用不同的代码进行处理,可以借助if-else进行解决。原创 2024-08-11 21:09:54 · 685 阅读 · 0 评论 -
【卡码网Python基础课 9.打印正方形】
上图中的数据就是一个二维列表,它是由行和列组成的表格状数据结构,可以理解为包含其他列表的列表(列表的每一个元素都是列表),二维列表的元素可以通过两个索引来访问,一个索引表示行,另一个表示列, 比如matrix[0][0] 表示第一行第一列的元素,值为1,matrix[2][2] 表示第三行第三列的元素,值为13。题目要求我们模拟打印一个正方形的框,根据题目可以联想到我们需要使用循环嵌套来控制行和列的打印,并根据当前行和列的位置来决定打印 “*”(外部边界)还是空白(内部)。然后需要一个循环嵌套来控制打印。原创 2024-08-11 17:05:22 · 492 阅读 · 0 评论 -
【卡码网Python基础课 8.奇怪的信】
1.通过取余num % 10获取最后一位数字,%表示取模/取余运算,即一个整数除以另一个整数后的余数,最后一位是个位,无法被10整除,所以就成了余数,进而可以通过%取余运算取到。想要判定是否是偶数(即可以被2整除a % 2 == 0),可以使用 if 判断, 如果是偶数,则累加到 result 总和上。根据刚才的分析得知,需要使用循环来接收多组数据的输入,变量n表示输入的整数。按照题目分析,我们需要使用取模运算和整数除法来获取每一位,直到 n 变为0。对于每组输入数据,输出一行,每组数据下方有一个空行。原创 2024-08-11 16:18:02 · 337 阅读 · 0 评论 -
【卡码网Python基础课(7.摆平积木)】
一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。对于每一摞积木,如果当前摞积木的数量超过平均值,也就是当前摞积木数量 > 平均值, 则把超出平均值数量的积木移到不足平均值的那一摞,超过的数量表示需要挪动的次数。第一步:我们需要数清每一摞积木的数量,把他们的总数相加,这样我们就知道积木的总数量,再把得到的结果除以 n , 就得到了在高度相同的情况下,每一摞积木的块数。第二步:对于超过平均值的积木,计算当前的积木数量和平均值的差值,把多的积木数量移到缺少的部分,直到积木高度相同。原创 2024-08-11 11:27:41 · 371 阅读 · 0 评论 -
【卡码网Python基础课 6.数组的倒序与隔位输出】
在大多数编程语言中,都有数组的概念,但是在Python中,使用列表替换了数组,相比于数组,列表更加灵活,可以存储一系列有序的元素,可以包含不同类型的数据(如整数、字符串、甚至其他列表),并且支持添加、移除和其他操作。(4):下标访问: 数组中的元素通过下标(索引)进行访问,每个人都有一个学号,学号就是自己的座位,这个学号被称为索引,但是数组里的索引是从0开始的,也就是说,第一个元素的索引是0,第二个元素的索引是1,依次类推。1.列表(List):列表是可变的序列,允许添加、删除或更改其中的元素。原创 2024-08-11 11:07:40 · 1275 阅读 · 0 评论 -
【卡码网Python基础课(A+B 问题5)】
每组数据之间没有空行,其实表达的意思是在处理每一组数据内部时,每行数据都要输出一个空行,但是对于最后一行数据,不需要输出空行,这涉及到判断当前行数据是否是最后一行。但是题目要求每组数据内部的输出(也就是每行数据之间)是有空行的,但两组数据之间并没有空行,所以在每组数据的最后一行,也就是 i = N - 1的时候,不需要输出空行。输入描述:输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。输出描述:对于每组输入,输出M个数的和,每组输出之间输出一个空行。原创 2024-08-07 22:41:45 · 373 阅读 · 0 评论 -
卡码网Python基础课(A+B问题4)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-08-06 22:32:44 · 1388 阅读 · 0 评论 -
【卡码网Python基础课(A+B问题3)】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-08-04 21:52:40 · 690 阅读 · 0 评论 -
【卡码网Python基础课(A+B问题2)】
在Python中,列表(List)是一种非常灵活的数据结构,用于存储一系列有序的元素。列表中的元素可以是不同的数据类型(如整数、字符串、对象等),并且列表的大小(即其中元素的数量)是可以变化的。列表是可变的,这意味着你可以在创建列表之后添加、移除或更改其元素。原创 2024-08-04 15:46:09 · 536 阅读 · 0 评论 -
【卡码网Python基础课(A+B问题1)】
Python基础课,本节介绍了python中一些基础的定义并介绍了如何用Python实现A+B原创 2024-08-03 20:59:29 · 1036 阅读 · 1 评论