尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Python 学习 · 第3周:数据类型转换、函数与文件操作

发布时间:2026/9/28 21:25:58

资讯中心
01
ARTICLE

Python 学习 · 第3周:数据类型转换、函数与文件操作

Python 学习 · 第3周:数据类型转换、函数与文件操作
一、本周学习收获1. 元组与集合两种新容器容器写法特点元组 tuple()只能查询和切片不能改列表 list[]能增删改查字典 dict{键: 值}按键取值集合 set{}不能重复、无序只能 in 查询集合最实用的场景就是去重还学会了用set.add()往集合里加元素。2. 数据类型转换这周练得最多的四个操作记住口诀就行# ① 列表去重先转集合再转回来s_city[合川,余总,余总,江北,江北,江北]lset(s_city)print(list(l))# ② 字符串 → 列表split(按什么切)s张三,李四,王五s_ls.split(,)# ③ 列表 → 字符串用什么.join(列表)s.join(s_l)# ④ 列表 ↔ 元组ttuple(s_l)dlist(t)一句话总结split 是拆join 是拼set 是去重。3. 函数本周的重头戏定义和调用defsay_hello(name):# def 函数名 (参数)print(f{name}欢迎光临)say_hello(李四)# 调用函数名(实参)参数的三种玩法# 位置参数顺序、数量一一对应introduce(18,李四)# 关键字参数指定名字传顺序随便show_model(year2022,name李四,kpi100)# 默认参数只能放在形参最后defwelcome(name,greeting欢迎回家):print(f{name},{greeting})返回值 return函数算完把结果交还给调用处。这周最重要的发现是——return 一执行函数立刻结束后面的代码不会再跑。我在calculate()里故意写了print(测试是否执行return后续语句)果然没打印眼见为实。作用域函数里定义的变量只在函数内有效想在函数里改全局变量必须写global声明。值传递 vs 引用传递这周最绕的点# int、float、bool、str → 值传递函数里改了外面不变# 列表、字典 → 引用传递函数里改了外面也跟着变heros[{name:张三,age:18}]defupdate_data(heros):forheroinheros:ifhero[name]张三:hero[age]hero[age]1update_data(heros)print(heros)# 张三的年龄真的变成 19 了4. 文件操作路径分两种绝对路径C:\Users\yuan\Desktop\test.txt前面加r防止\被当成转义符相对路径./表示当前目录../表示上级目录写项目时优先用它。三种模式记牢模式含义注意r只读文件不存在会报错w覆盖写文件不存在自动创建文件夹不存在会报错a追加写在末尾接着写不清空推荐 with 写法不用手动关文件heroes[后裔,鲁班,狄仁杰]withopen(./第二周/heroes.txt,a,encodingutf-8)asf:forheroinheroes:f.write(hero\n)# \n 是换行另外读文件有两个常用姿势f.read()一次读全部for i in f:一行一行读。二、本周练习精选练习 1统计单词出现次数类型转换 字典综合textapple banana apple cherry banana applestext.split( )word_dict{}forwordins:ifwordinword_dict.keys():word_dict[word]1else:word_dict[word]1fork,vinword_dict.items():print(k,v)# 找出次数最多的单词max_nummax(word_dict.values())fork,vinword_dict.items():ifvmax_num:print(k)思路先 split 拆成列表再用字典计数最后遍历找最大值。字典.get(键, 0)这种写法更简洁下周试试。练习 2业绩算奖金多返回值defcalculate(score,base100):ifscore9000:dj优秀jjscore*0.2baseelifscore8000:dj良好jjscore*0.15baseelifscore6000:dj及格jjscore*0.1baseelse:dj待提升jjbasereturn(dj,jj)# 一次返回两个值是个元组print(calculate(9544))第一次知道 return 可以直接返回一个元组一举两得。练习 3王者荣耀英雄管理系统本周大项目用while True做菜单循环每个英雄存成一个字典所有英雄放进列表实现新增 / 查询 / 修改 / 删除heroes[]whileTrue:print(1.新增\t2.查询\t3.修改\t4.删除\t0.退出)in_numinput(请输入对应数字进入系统)ifin_num0:breakelifin_num1:nameinput(请输入英雄名)dwinput(请输入英雄定位)hero{name:name,dw:dw,hp:,pp:,voices:}heroes.append(hero)elifin_num2:s_nameinput(请输入英雄名)forhinheroes:ifh[name]s_name:print(h)break# ……修改、删除同理把之前学的 while、for、字典、列表全串起来了跑通的那一刻很有成就感。不过这个程序里我藏了两个 bug见下面的反思。三、遇到的难题与困惑引用传递差点把我绕晕以前一直以为传进函数的都是复印件直到改了 heros 列表外面的数据跟着变了才明白容器类型传的是原件。现在还不太敢用怕误改数据。管理系统的查询功能一开始死活查不到后来发现input(请输入英雄名)忘了用变量接收用户输入的名字根本没存下来后面if h[name] in_num一直在拿菜单编号比英雄名当然永远不相等。删除分支写反了菜单 4 是删除我却顺手写成了heroes.append(h)——复制新增代码改的没改干净。应该是heroes.remove(h)。作用域和 global什么情况下必须写 global什么时候不用现在还靠试没形成直觉。四、错题反思与总结出错原因分析复制粘贴后没改干净删除写成 append——粗心input 不接收返回值——对input 会把用户输入返回回来这个机制理解不深值传递 / 引用传递混淆——新知识点不熟练。改正方法与小技巧复制代码后逐行问自己这一行在这个分支里该干什么尤其是函数名和 append/remove 这种反义词input()后面永远先检查“接收它的变量呢”判断传参类型记一句话数字字符串是复印件列表字典是原件写完一个功能立刻测一遍再写下一个别攒到最后一起 debug。五、下周计划继续深入函数听说还有 lambda 和递归把管理系统的删除功能修好并加上文件保存——正好把这周学的文件读写用进去让数据关机也不丢。记录于 2026 年 9 月 27 日第三周打卡完成 ✅
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。