还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机脚本编程基础与应用课程简介什么是计算机脚本语言?常见脚本语言计算机脚本语言是一种高级编程语言,主要用于自动执行特定任务与编译型语言不同,脚本语言通Python常由解释器直接执行,无需编译成机器码,具有快速开发、易于理解和维护的特点脚本语言广泛应用于网页开发、系统管理、数据处理和自动化任务等领域以简洁易读的语法著称,广泛应用于数据分析、人工智能、Web开发和自动化领域脚本语言的核心优势JavaScript脚本语言提供了极高的灵活性和生产力,使开发者能够快速实现功能原型,简化复杂任务,提高工作效率脚本语言通常具有丰富的标准库和第三方模块,可以轻松实现各种功能,从简单的文件处理到主要用于网页开发,现在通过Node.js也可用于服务器端开发和桌面应用程序复杂的网络应用Shell脚本教学目标1理解脚本语言基本语法通过本课程,学生将掌握脚本语言的基本语法规则、变量使用、数据类型和控制结构我们将深入解析代码示例,帮助学生建立起清晰的编程思维模式,能够读懂并分析各类脚本代码这一基础将为后续学习提供关键支撑2掌握脚本编写与调试技巧学生将学习如何编写结构清晰、逻辑严密的脚本程序,同时掌握有效的调试方法,包括断点设置、单步执行、变量监视等技术通过实战训练,提升发现问题、分析问题和解决问题的能力,培养编程耐心和细致的代码审查习惯能够独立完成简单脚本项目教学内容概览脚本语言基础语法介绍脚本语言的基本语法规则、注释和代码结构,建立编程思维基础变量与数据类型讲解不同类型的数据及其操作方法,包括字符串、数字、列表等流程控制结构详解条件判断、循环和跳转语句,实现程序的逻辑控制函数与模块本课程设计了系统化的内容结构,从基础到应用,循序渐进地引导学生掌握脚本学习函数定义与调用,理解模块化编程思想,提高代码复用性编程技能我们注重理论与实践相结合,每个模块都包含必要的概念讲解和丰富的实例演示,确保学生能够真正理解并应用所学知识文件操作与自动化任务掌握文件读写技术,实现数据处理和系统自动化操作教学方法与工具理论讲解结合代码示范使用VSCode等集成开发环境在线IDE辅助练习代码版本管理基础采用讲解-演示-练习的教学模式,课程主要采用Visual StudioCode作为解决环境配置困难和跨平台兼容介绍Git和GitHub的基本操作,教授每个知识点都配有实际代码示例,为开发工具,这是一款功能强大且性问题,课程引入了多种在线IDE平学生如何进行版本控制和协作开教师通过投影展示代码并详细解释轻量级的编辑器,支持多种语言和台(如cpp.sh、ideone、replit等)发学生将学习创建仓库、提交更每一行的作用和原理学生可以实丰富的插件我们将教授学生如何作为辅助学习工具这些平台无需改、分支管理和合并请求等核心概时观察代码执行过程,加深对抽象配置开发环境,包括插件安装、代安装,通过浏览器即可访问,支持念通过实际操作,培养专业的代概念的理解我们还会分析实际项码高亮、自动补全等功能设置通多种语言和实时协作功能在课堂码管理习惯,为未来参与团队项目目中的代码片段,展示专业开发中过使用专业开发工具,学生能够更练习和作业提交中,学生可以选择打下基础我们还会演示如何利用的最佳实践接近实际工作环境,提前适应行业使用这些平台,减少环境问题带来GitHub Pages展示个人项目,建立标准的学习障碍个人技术档案脚本语言基础语法介绍语句结构与注释变量声明与赋值#这是Python中的单行注释printHello,World!#这是行尾注释这是多行注释可以跨越多行#JavaScript中的注释//这是单行注释/*这#Python变量赋值name=张三age=25is_student=True//JavaScript变量声明let name=张三;const age=25;var is_student=是多行注释*/console.logHello,World!;#Shell脚本中的注释#这是注释echo Hello,World!true;#Shell变量赋值name=张三age=25数据类型字符串不同脚本语言有各自的语法规则,但都支持注释功能注释是代码中不会执行的文本,用于解释代码意图、提供文档或临时禁用代码良好的注释习惯是专业编程用于表示文本数据,如姓名、地址等的重要组成部分message=你好,世界!数字包括整数和浮点数,用于计算和统计count=10price=
99.9布尔表示真或假,用于条件判断is_valid=Truehas_error=False变量与数据类型详解动态类型与静态类型区别常用数据类型示例代码脚本语言多采用动态类型系统,意味着变量的类型在运行时确定,且可以随时改变这与C++、Java等静态类型语言不同,后者要求在编译时确定变量类型#Python中的数据类型示例#
1.基本类型text=这是一段文本#字符串number=42#整数decimal=
3.14#浮点数is_active=True#布尔值no_value=None#空值#
2.复合类型fruits=[苹果,香蕉,橙子]#列表dimensions=800,600#元组(不可变)user={name:李明,age:30}#字典unique_items={红,绿,蓝}#集合动态类型(如Python)静态类型(如C++)x=10x=hello#合法int x=10;x=hello;//错误类型检查在运行时进行类型检查在编译时进行更灵活,代码简洁更严格,可能更安全动态类型提供了极大的灵活性,但也可能导致难以发现的类型错误许多现代脚本语言如TypeScript(JavaScript的超集)提供了可选的类型注解,结合了两种类型系统的优点类型转换与类型检查方法#类型转换age_str=25age_num=intage_str#字符串转整数price=
19.99price_int=intprice#浮点数转整数(截断)count=100count_str=strcount#整数转字符串#类型检查printtypeage_num#输出:class intprintisinstanceprice,float#输出:True流程控制结构条件语句循环语句#Python条件语句score=85if score=90:print优秀elif score=80:print良好elif score=60:print及格1else:print不及格for循环#遍历列表fruits=[苹果,香蕉,橙子]for fruitin fruits:printf我喜欢吃{fruit}#遍历范围for iin range1,5:#1到4printi条件语句允许程序根据特定条件执行不同的代码块在上面的例子中,根据分数的不同范围,程序会给出不同的评价注意Python使用缩进来标识代码块,这与使用花括号的其他语言不同2条件表达式(三元运算符)while循环#Python条件表达式age=20status=成年if age=18else未成年//JavaScript条件表达式let age=20;let status=age=18#计数循环count=0while count5:printcount count+=1#条件循环password=while password!=secret:成年:未成年;password=input请输入密码:3跳转语句#break:跳出整个循环for iin range10:if i==5:break printi#只打印0到4#continue:跳过当前迭代for iinrange10:if i%2==0:continue printi#只打印奇数函数基础函数定义与调用参数传递与返回值#定义一个简单的函数def greetname:向指定的人问好(文档字符串)return f你好,{name}!#调用函数message=greet王位置参数小明printmessage#输出:你好,王小明!#函数无返回值def display_infoname,age:printf姓名:{name},年龄:{age}#无return语句,默认返回None#调用无返回值的函数display_info李华,25def powerbase,exponent:return base**exponentresult=power2,3#2的3次方=8关键字参数def create_profilename,age,city:return f{name},{age}岁,来自{city}profile=create_profile name=张三,city=北京,age=30函数是组织代码的基本单位,通过将相关代码块打包为可重用的单元,提高代码的模块化和可维护性在Python中,函数使用def关键字定义,可以包含文档字符串(docstring)用于说明函数的用途和用法默认参数def greetname,greeting=你好:return f{greeting},{name}!msg1=greet李四#使用默认问候语msg2=greet王五,早上好作用域与局部变量#全局变量与局部变量total=0#全局变量def add_to_totalvalue:global total#声明使用全局变量local_var=value*2#局部变量total+=local_var returntotalprintadd_to_total5#输出:10#printlocal_var#错误!局部变量在函数外不可访问模块与库的使用标准库介绍导入模块方法标准库是语言自带的模块集合,无需额外安装即可使用以Python为例,其标准库覆盖了文件操作、网络通信、数据处理等多个领域,为开发者提供了丰富的功能#导入整个模块import mathresult=math.sqrt16#使用math模块的sqrt函数#导入特定函数from mathimport sqrt,piresult=sqrt16支持#直接使用sqrt函数#导入模块并指定别名import matplotlib.pyplot aspltplt.plot[1,2,3,4]#导入所有内容不推荐from mathimport*os模块提供操作系统功能,如文件路径操作、进程管理等import os#获取当前工作目录current_dir=os.getcwd#列出目录内容files=os.listdir.datetime模块自定义模块示例处理日期和时间相关操作创建文件mymath.py:from datetimeimport datetime#获取当前时间now=datetime.nowprintf当前时间:{now}#格式化日期formatted=now.strftime%Y年%m月%d日#mymath.py自定义数学函数模块PI=
3.14159#模块级常量def squarex:计算平方return x*xdef cubex:计算立方return x*x*xrandom模块生成随机数和随机选择import random#随机整数num=random.randint1,100#随机选择choice=random.choice[红,绿,蓝]在另一个文件中使用:#main.pyimport mymatharea=mymath.PI*mymath.square5printf圆面积:{area}printf8的立方是:{mymath.cube8}文件操作基础文件读写方法文件路径与异常处理实例日志文件自动生成#写入文件with opendata.txt,w,encoding=utf-8as f:f.write第一行数据import os#构建跨平台路径data_dir=datafilename=users.txtfile_path=import loggingimporttimefrom datetimeimport datetime#配置日志系统\n f.write第二行数据\n f.write第三行数据\n#读取整个文件with os.path.joindata_dir,filename#检查文件是否存在if not os.path.existsdata_dir:logging.basicConfig filename=app.log,level=logging.INFO,opendata.txt,r,encoding=utf-8as f:content=f.read os.makedirsdata_dir#创建目录#异常处理try:with openfile_path,r,format=%asctimes-%levelnames-%messagesdef log_activityaction,printcontent#逐行读取with opendata.txt,r,encoding=utf-8as f:for encoding=utf-8as f:content=f.readexcept FileNotFoundError:status:记录程序活动到日志文件logging.infof用户执行:{action},状态:line in f:printline.strip#strip去除换行符#追加内容with printf文件{file_path}不存在except PermissionError:printf没有权限访问{status}#模拟程序活动actions=[登录,查询数据,修改记录,退出]for actionopendata.txt,a,encoding=utf-8as f:f.write追加的新数据\n{file_path}except Exception as e:printf发生错误:{e}in actions:log_activityaction,成功time.sleep1#模拟时间间隔#读取并显示日志内容print日志内容:with openapp.log,r aslog_file:printlog_file.readPython的with语句(上下文管理器)确保文件正确关闭,即使发生异常也能释放资源,是处理文件的最佳实践使用os.path模块可以确保路径在不同操作系统间兼容异常处理机制让程序能够优雅地应对各种文件操作错误,提高程序的健壮性脚本调试技巧常见错误类型使用调试工具语法错误SyntaxError代码不符合语言语法规则,无法被解释器解析在代码执行前就会被发现#错误示例if x==5#缺少冒号printx等于5#正确写法if x==5:printx等于5名称错误NameError使用了未定义的变量或函数名#错误示例printundefined_variable#正确写法defined_variable=有值printdefined_variable现代集成开发环境IDE如VSCode提供了强大的调试功能,可以帮助开发者追踪程序执行流程,检查变量值,发现逻辑错误主要调试技术•断点Breakpoints在特定行设置停止点,程序执行到此处会暂停•单步执行Step Over逐行执行代码,不进入函数内部类型错误TypeError•步入Step Into进入函数内部执行对不兼容的类型执行操作•步出Step Out执行完当前函数并返回调用点•变量监视Watch观察特定变量的值变化#错误示例text=42result=text+10#字符串不能与数字相加#正确写法text=42result=inttext+10#先转换为整数•调用堆栈Call Stack查看函数调用链日志打印与错误追踪import logging#配置日志logging.basicConfig level=logging.DEBUG,format=%asctimes-%levelnames-%messagesdefdividea,b:logging.debugf尝试计算{a}/{b}try:result=a/b logging.infof计算成功:{a}/{b}={result}returnresult exceptZeroDivisionError:logging.errorf除零错误:{a}/{b}return Noneexcept Exceptionas e:logging.exceptionf计算时发生异常:{e}return None#测试函数for i,j in[10,2,8,0,5,2]:printfdivide{i},{j}={dividei,j}索引错误IndexError访问超出范围的序列索引脚本自动化应用案例自动化批量文件处理定时任务脚本示范简单爬虫脚本示例import osimportshutilfrom datetimeimport datetimedeforganize_filessource_dir:import scheduleimporttimeimport datetimeimport requestsdef check_websiteurl:import requestsfrombs4import BeautifulSoupimportcsvimport timedef按文件类型整理文件夹中的文件#确保源目录存在if not检查网站是否可访问并记录响应时间try:start_time=time.time scrape_newsurl:爬取新闻网站的标题和链接headers={User-Agent:os.path.existssource_dir:printf源目录{source_dir}不存在response=requests.geturl,timeout=10end_time=time.time Mozilla/
5.0Windows NT
10.0;Win64;x64AppleWebKit/
537.36}try:#获取网页内return#创建分类目录categories={图片:[.jpg,.png,status=response.status_code response_time=roundend_time-start_time容response=requests.geturl,headers=headers response.encoding=utf-8#确保.gif,.bmp],文档:[.doc,.docx,.pdf,.txt],视频:*1000with openwebsite_log.txt,a as f:log_entry中文正确显示#解析HTML soup=BeautifulSoupresponse.text,html.parser#查找新[.mp4,.avi,.mov],音频:[.mp3,.wav,.flac]}#为=f{datetime.datetime.now}-{url}-log_entry+=f状态:{status}闻元素这里的选择器需要根据目标网站调整news_items=soup.select.news-item#准每个分类创建目录for categoryin categories:category_dir=-响应时间:{response_time}ms\nf.writelog_entry备数据存储news_data=[]for itemin news_items[:10]:#只获取前10条title_elem=os.path.joinsource_dir,category ifnotos.path.existscategory_dir:printf检查完成:{url}-状态:{status}except Exceptionas e:item.select_one.title link_elem=item.select_onea iftitle_elem andos.makedirscategory_dir#遍历源目录中的所有文件files_moved=0for withopenwebsite_log.txt,a asf:link_elem:title=title_elem.text.strip link=link_elem[href]if notfilenamein os.listdirsource_dir:file_path=os.path.joinsource_dir,f.writef{datetime.datetime.now}-{url}-错误:{stre}\n printf检查link.startswithhttp:link=url+link news_data.append{title:title,filename#跳过目录if os.path.isdirfile_path:出错:{url}-{stre}#设置定时任务def setup_schedule:websites=link:link,date:time.strftime%Y-%m-%d}#保存到CSV文件withcontinue#获取文件扩展名file_ext=[https://www.baidu.com,https://www.qq.com,opennews_data.csv,w,newline=,encoding=utf-8asf:writer=os.path.splitextfilename
[1].lower#将文件移动到对应分类目录https://www.
163.com]for urlin websites:#每小时检查一次csv.DictWriterf,fieldnames=[title,link,date]writer.writeheaderfor category,extensions incategories.items:if file_ext inschedule.every
1.hour.docheck_website,url=url print定时任务已设置,按writer.writerowsnews_data printf成功抓取{lennews_data}条新闻returnextensions:dest_path=os.path.joinsource_dir,category,filename Ctrl+C退出#持续运行定时任务while True:schedule.run_pending news_data except Exceptionas e:printf抓取失败:{stre}return[]#运行爬虫shutil.movefile_path,dest_path printf移动:{filename}-time.sleep1#运行定时任务if__name__==__main__:setup_schedule请替换为实际网址sample_news=scrape_newshttps://news.example.com{category}files_moved+=1break printf整理完成,共移动{files_moved}个文件#使用示例organize_filesD:/下载脚本安全与规范输入验证与防注入代码风格与注释规范脚本接收外部输入时,必须进行严格验证和清理,防止恶意输入导致安全漏洞以下是几种常见的输入验证方法#
1.类型检查def process_ageage_str:try:age=intage_str ifage0or age150:return年龄必须在0-150之间return f处理年龄:{age}except ValueError:return请输入有效的数字#
2.正则表达式验证importredef validate_usernameusername:pattern=r^[a-zA-Z0-9_]{3,20}$if re.matchpattern,username:return TruereturnFalse#
3.参数化查询防SQL注入import sqlite3def safe_user_lookupuser_id:conn=sqlite
3.connectusers.dbcursor=conn.cursor#使用参数化查询,而非字符串拼接cursor.executeSELECT*FROM usersWHERE id=,user_id,return cursor.fetchone良好的代码风格和充分的注释能大幅提高代码的可读性和可维护性Python社区广泛采用PEP8作为代码风格指南代码风格要点安全处理用户输入是脚本编写的基本要求,尤其是在Web应用、数据库操作和文件处理等场景中在处理敏感数据时,应采用适当的加密和访问控制措施•使用4个空格缩进,不用制表符Tab•行长度不超过79个字符•函数和类之间空两行,类中方法空一行•导入模块放在文件顶部,按标准库、第三方库、本地模块分组•变量名使用小写加下划线snake_case,类名使用驼峰命名CamelCase注释规范•每个函数、类和模块都应有文档字符串docstring,说明其用途和用法•复杂逻辑处应有注释解释代码意图,而非重述代码行为•保持注释的更新,与代码变化同步•使用TODO、FIXME等标签标记需要改进的地方教学示范脚本讲解
(一)Hello World程序详解代码结构与执行流程#文件名:hello_world.py这是一个简单的Hello World程序,用于演示Python基本语法它展示了如何打印信息到控制台,以及如何使用注释和文档模块导入字符串#导入模块import datetime#定义一个打印欢迎信息的函数def print_welcome:打印欢迎信息和当前时间current_time=datetime.datetime.now formatted_time=current_time.strftime%Y年%m月%d日%H:%M:%S#打印欢迎信息程序首先导入datetime模块,这是Python标准库的一部分,提供处理日期和时间的功能导入操作使这些功能在程序中可用printHello,World!printf当前时间是:{formatted_time}print欢迎学习Python编程!#程序入口点if__name__==__main__:print_welcome函数定义接着定义了print_welcome函数,该函数包含获取当前时间并格式化,然后打印欢迎信息的逻辑函数定义使代码更加模块化,便于理解和重用主程序入口if__name__==__main__条件判断确保函数调用只在直接运行脚本时执行,而在脚本被导入其他程序时不执行,这是Python模块化编程的常见模式函数执行最后执行print_welcome函数,获取当前时间并打印出欢迎信息程序执行完这些操作后结束运行环境配置说明要运行此脚本,需要先配置Python环境
1.安装Python解释器(推荐Python
3.6或更高版本)
2.配置环境变量,确保可以在命令行中直接使用python命令
3.选择一个文本编辑器或IDE(如VSCode,PyCharm等)这个简单的Hello World程序虽然只有几行代码,但涵盖了Python编程的多个基本概念,包括模块导入、函数定义、字符串格式化、注释和程序入口点等注意`if
4.创建.py文件并保存上述代码__name__==__main__`这一惯用法,它确保代码仅在作为主程序运行时执行,而在作为模块导入时不执行
5.通过命令行执行python hello_world.py教学示范脚本讲解
(二)变量与输入输出示例数据类型转换演示#文件名:input_output_demo.py这个示例演示了Python中的变量使用、用户输入和输出格式化包括不同数据类型的变量声明、从用户获取输入以及#文件名:type_conversion_demo.py这个示例演示了Python中的数据类型转换包括字符串、整数、浮点数和布尔值之间的相互转换def格式化输出结果def main:#变量声明与赋值user_name=#字符串变量初始化为空user_age=0#整数变量初始化为0demonstrate_conversions:#字符串转数字str_number=42int_number=intstr_number#字符串转整数printf字符#获取用户输入print=====个人信息收集=====user_name=input请输入您的姓名:#输入验证循环while True:串{str_number}转换为整数:{int_number}str_float=
3.14159float_number=floatstr_float#字符串转浮点数age_input=input请输入您的年龄:try:user_age=intage_input#尝试转换为整数if user_ageprintf字符串{str_float}转换为浮点数:{float_number}#数字转字符串num=100str_num=strnum#整数转字符0or user_age150:print年龄必须在0到150之间,请重新输入continue break#输入有串printf整数{num}转换为字符串:{str_num}#浮点数和整数转换float_val=
9.99int_val=intfloat_val#效,跳出循环except ValueError:print请输入有效的数字!#计算出生年份大约import datetime浮点数转整数截断printf浮点数{float_val}转换为整数截断:{int_val}int_val=5float_val=floatint_valcurrent_year=datetime.datetime.now.year birth_year=current_year-user_age#格式化输出结果print\n=====信#整数转浮点数printf整数{int_val}转换为浮点数:{float_val}#布尔值转换print\n布尔值转换演示:息摘要=====printf姓名:{user_name}printf年龄:{user_age}岁printf您大约出生于{birth_year}年#根printfbool0={bool0}#0转换为False printfbool1={bool1}#非0数字转换为True据年龄输出不同消息条件语句示例if user_age18:print您还未成年elif user_age35:print您正值青年printfbool={bool}#空字符串转换为False printfboolhello={boolhello}#非空字符串转换为Trueelif user_age60:print您正值中年else:print您已步入老年if__name__==__main__:main printfbool[]={bool[]}#空列表转换为False printfintTrue={intTrue}#True转换为1printfintFalse={intFalse}#False转换为0if__name__==__main__:demonstrate_conversions错误处理基础教学示范脚本讲解
(三)条件判断与循环实例实现简单计算器功能#文件名:control_flow_demo.py这个示例演示了Python中的条件判断和循环结构包括if-elif-else语句、for循环和while循环的使用def#文件名:simple_calculator.py这个示例实现了一个简单的命令行计算器支持基本的加减乘除运算,并演示了条件判断、循环和异常处理defcheck_numbernumber:检查一个数字的各种属性并打印结果printf\n分析数字:{number}#条件判断示例if calculatenum1,num2,operator:执行基本的算术运算if operator==+:return num1+num2elif operatornumber==0:print这个数字是零elif number0:print这个数字是正数else:print这个数字是负数==-:return num1-num2elif operator==*:return num1*num2elif operator==/:#除法需要#嵌套条件判断if number!=0:if number%2==0:print这个数字是偶数else:检查除数是否为零if num2==0:raise ValueError错误:除数不能为零return num1/num2else:print这个数字是奇数#多条件判断if number100:print这个数字大于100elif number50:raise ValueErrorf不支持的运算符:{operator}def run_calculator:运行计算器的主逻辑print====简易计算器====print这个数字在51到100之间elif number0:print这个数字在1到50之间def demonstrate_loops:演示不同print支持的运算:+,-,*,/print输入q退出while True:#获取用户输入expression=input\n请类型的循环结构print\n===for循环示例===print打印1到5的平方:for iin range1,6:printf{i}的平方输入算式如:5+3:#检查是否退出if expression.lower==q:print谢谢使用,再见!是{i**2}print\n遍历列表:fruits=[苹果,香蕉,橙子,葡萄]for fruitin fruits:printf我break#解析输入try:parts=expression.split iflenparts!=3:喜欢吃{fruit}print\n===while循环示例===print倒数计时:countdown=5while countdown0:print格式错误!请按照数字运算符数字的格式输入continue#提取并转换输入值printf{countdown}...countdown-=1print发射!print\n===break和continue示例===print使用num1=floatparts
[0]operator=parts
[1]num2=floatparts
[2]#执行计算break提前结束循环:for iin range1,10:if i==6:print遇到6,结束循环break result=calculatenum1,num2,operator#显示结果整数结果不显示小数点if result==printi,end=print\n print使用continue跳过特定值:for iin range1,10:if i%3==0:intresult:printf结果:{intresult}else:printf结果:{result}printf跳过{i},end=continue printi,end=print\nif__name__==__main__:#调用条except ValueErroras e:printf输入错误:{e}except Exceptionas e:printf发生错误:{e}if件判断示例check_number0check_number42check_number-7#调用循环演示函数demonstrate_loops__name__==__main__:run_calculator教学示范脚本讲解
(四)函数定义与调用实例参数传递与返回值演示#文件名:function_demo.py这个示例演示了Python中函数的定义和调用包括不同类型的参数传递、返回值和文档字符串的使用#基本函数定位置参数义def greetname:向指定的人问好return f你好,{name}!#多参数函数def calculate_rectangle_arealength,width:计算矩形面积area=length*width return area#默认参数def create_profilename,age,city=北京,occupation=None:函数调用时按照定义顺序传递参数创建用户资料,city默认为北京,occupation默认为None profile={name:name,age:age,city:city}#只有当occupation不为None时才添加到字典if occupation:profile[occupation]=occupation defpowerbase,exponent:return base**exponent#调用方式result=power2,3#2的3次方=8return profile#可变参数数量def sum_all*numbers:计算所有传入数字的总和total=0for numin numbers:total+=num returntotal#关键字可变参数def build_person**attributes:创建一个包含任意属性的人物描述returnattributes#演示函数调用def demonstrate_functions:#调用基本函数message=greet张三printmessage#调用多参数函数area=calculate_rectangle_area5,8printf长方形面积:{area}平方单位#调用带默认参数的函数profile1=create_profile李四,30profile2=create_profile王五,25,上海,工程师printf资料1:{profile1}printf资料2:{profile2}#使用关键字参数area=calculate_rectangle_areawidth=10,length=5printf使用关键字参数的面积:{area}平方单位#调用可变参数函数total=sum_all1,2,3,4,5printf总和:{total}#调用关键字可变参数函数person=build_personname=赵六,age=40,city=广州,hobby=读书,profession=关键字参数教师printf人物描述:{person}if__name__==__main__:demonstrate_functions使用参数名显式指定参数值,可以不按顺序传递def dividedividend,divisor:return dividend/divisor#调用方式result=dividedivisor=2,dividend=10#10/2=5默认参数为参数提供默认值,调用时可以省略这些参数def greetname,greeting=你好:return f{greeting},{name}!#调用方式msg1=greet李四#使用默认问候语msg2=greet王五,早上好#覆盖默认值可变参数使用*args接收任意数量的位置参数,**kwargs接收任意数量的关键字参数def print_all*args,**kwargs:for argin args:printarg forkey,value inkwargs.items:printf{key}:{value}#调用方式print_all1,2,3,name=张三,age=30实操练习指导
(一)练习题布置与目标代码模板与注释说明基础语法练习#文件名:age_calculator.py练习1:年龄计算器提示用户输入姓名和出生年份,计算并显示用户年龄import datetimedef calculate_age:#TODO:获取用户输入#TODO:获取当前年份#TODO:计算年龄#TODO:显示结果if__name__==__main__:目标熟悉变量声明、基本数据类型和简单输入输出操作calculate_age任务创建一个脚本,提示用户输入姓名和出生年份,然后计算并显示用户年龄1•使用input函数获取用户输入•使用int函数转换字符串为整数•使用datetime模块获取当前年份•使用print函数格式化输出结果控制流练习目标掌握条件判断和循环结构任务创建一个猜数字游戏,程序随机生成一个1-100之间的数字,用户有多次机会猜测2•使用random模块生成随机数•使用while循环控制猜测过程•使用if-elif-else结构提供猜测反馈•计算并显示猜测次数#文件名:number_guessing.py练习2:猜数字游戏程序随机生成一个1-100之间的数字,用户尝试猜测这个数字import randomdefplay_guessing_game:#TODO:生成一个1-100之间的随机数#TODO:初始化猜测次数和用户猜测值#TODO:使用循环让用户进行多次猜测,直到猜中为止#TODO:根据用户猜测提供反馈太大、太小或猜中#TODO:猜中后显示总猜测次数if__name__==函数与模块练习__main__:play_guessing_game目标学习函数定义、参数传递和返回值处理任务创建一个简单的计算器模块,包含加减乘除四个基本运算函数3•定义四个运算函数,每个函数接受两个参数并返回计算结果•在除法函数中添加除数为零的检查•创建一个主函数展示所有计算功能•使用文档字符串为每个函数添加说明常见问题解答实操练习指导
(二)代码提交与版本管理使用GitHub进行代码托管安装Git从Git官网git-scm.com下载并安装Git版本控制系统Windows用户可以使用Git Bash,Mac用户可以通过Homebrew安装,Linux用户可以使用包管理器安装安装完成后,在命令行中使用git--version验证安装是否成功基本Git配置首次使用Git需要设置用户名和邮箱,这些信息将用于标识你的提交打开命令行工具,执行以下命令git config--global user.name你的名字git config--global user.email你的邮箱创建本地仓库为练习代码创建一个新文件夹,进入该文件夹,然后初始化一个新的Git仓库mkdir python_exercisescd python_exercisesgit init
1.访问github.com并创建一个账号(如果还没有)添加并提交文件
2.点击New repository创建新仓库,命名为python_exercises
3.保持仓库为公开Public,不要添加README文件(我们将推送本地仓库)完成练习后,将代码文件添加到Git仓库并提交变更
4.创建仓库后,GitHub会显示推送本地仓库的命令,复制并执行这些命令git addage_calculator.pygit commit-m完成年龄计算器练习git remoteadd originhttps://github.com/你的用户名/python_exercises.gitgit branch-M maingit push-u originmain之后每次更新代码,只需执行git add文件名git commit-m提交说明gitpush代码评审与反馈流程提交代码1实操练习指导
(三)在线IDE使用技巧调试与测试方法打印调试法使用print函数在关键位置输出变量值和程序状态,是最简单的调试方法在在线IDE中特别有用,因为它们可能没有集成调试器#打印调试示例defcalculate_arearadius:printf输入的半径是:{radius}area=
3.14*radius*radius printf计算得到的面积是:{area}returnarea断言测试使用assert语句验证代码是否按预期工作如果断言条件为假,程序会抛出AssertionError#断言测试示例def test_add_function:assert add2,3==5,2+3应该等于5assert add-1,1==0,-1+1应该等于0assert add0,0==0,0+0应该等于0print所有测试通过!在线集成开发环境IDE为没有本地开发环境的学生提供了便捷的编程工具以下是几个推荐的在线IDE及其使用技巧Replit replit.com•支持多种编程语言,包括Python、JavaScript等•提供完整的开发环境,包括文件管理、终端和版本控制•可以创建多文件项目和导入外部库•支持实时协作,适合小组项目单元测试•使用技巧利用Fork功能复制示例代码,使用Share分享你的代码使用Python的unittest模块创建正式的测试用例,适合更复杂的项目Google Colabcolab.research.google.com#单元测试示例import unittestclassTestCalculatorunittest.TestCase:def test_additionself:self.assertEqualadd2,3,5self.assertEqualadd-1,1,0def test_divisionself:self.assertEqualdivide10,2,5•基于Jupyter Notebook的在线编程环境with self.assertRaisesValueError:divide5,0#应该抛出除零错误if__name__==__main__:unittest.main•特别适合数据分析和机器学习任务•与Google Drive集成,方便保存和分享•提供免费GPU加速•使用技巧利用markdown单元格添加注释和说明,使用代码片段快速插入常用代码常见问题汇总
(一)语法错误排查技巧运行环境配置问题1仔细阅读错误信息Python错误信息通常会指出错误类型、发生位置和原因不要忽略这些信息,它们是解决问题的关键线索错误信息中的行号和箭头^会指明具体的错误位置File script.py,line5if x==5^SyntaxError:invalid syntax上面的错误表明第5行缺少冒号,应该写成if x==5:2检查括号和缩进Python中最常见的语法错误是括号不匹配和缩进不一致确保每个开括号都有对应的闭括号,并且代码块的缩进级别一致(推荐使用4个空格)#括号不匹配示例printHello,2+3*4#修正:添加右括号printHello,2+3*4#缩进不一致示例if x0:print正数print非负数#错误的缩进#修正:统一缩进if x0:print正数print非负数Python版本冲突同时安装多个Python版本可能导致混淆确认你使用的命令指向正确的Python版本•在Windows上,使用py-
3.8或python
3.8指定版本•在Mac/Linux上,使用python3或python
3.8指定版本•检查版本:python--version或python-V模块安装问题使用pip安装第三方模块,确保安装到正确的Python环境中•安装模块:pip install模块名•指定版本安装:pip install模块名==版本号3•升级模块:pip install--upgrade模块名•查看已安装模块:pip list使用代码检查工具工具如pylint、flake8或在线IDE的内置检查功能可以自动发现语法错误和风格问题这些工具会标记可能的问题并提供修正建议虚拟环境使用在命令行中使用pylint使用虚拟环境可以避免全局环境污染和依赖冲突常见问题汇总
(二)逻辑错误与调试方法输入输出异常处理#用户输入验证示例def get_integer_inputprompt:获取并验证整数输入while True:try:value=inputprompt returnintvalue exceptValueError:print错误:请输入有效的整数#文件操作异常处理def read_data_from_filefilename:安全地从文件读取数据try:with openfilename,r,encoding=utf-8asfile:return file.read exceptFileNotFoundError:printf错误:文件{filename}不存在returnNone exceptPermissionError:printf错误:没有权限读取文件{filename}return Noneexcept Exceptionase:printf读取文件时发生错误:{e}return None#网络请求异常处理import requestsdeffetch_data_from_urlurl,timeout=10:安全地从URL获取数据try:response=requests.geturl,timeout=timeoutresponse.raise_for_status#检查HTTP错误return response.json except requests.exceptions.HTTPError ase:printfHTTP错误:{e}except requests.exceptions.ConnectionError:print连接错误:无法连接到服务器exceptrequests.exceptions.Timeout:print超时错误:请求超时exceptrequests.exceptions.JSONDecodeError:print解析错误:无法解析JSON响应exceptExceptionase:printf请求出错:{e}return None进阶学习资源推荐在线课程与视频教程经典书籍与文档慕课网Python系列课程面向中文学习者的全面Python教程,从基础到高级应用都有覆盖特别推荐Python核心编程和Python数据分析系列课程•适合级别初级到中级•优势中文授课,实例丰富,有配套练习•网址www.imooc.com中国大学MOOC平台国内多所知名大学提供的Python编程课程,学术性强,内容系统全面推荐清华大学、北京大学的Python课程•适合级别初级到高级•优势大学教授授课,理论基础扎实•网址www.icourse
163.org网易云课堂提供多种Python专题课程,包括Web开发、数据分析、人工智能等方向内容实用,注重实战能力培养•适合级别初级到中级•优势专题明确,针对性强•网址study.
163.comB站编程教学视频哔哩哔哩平台上有大量免费的Python教学视频,涵盖各种难度和应用领域推荐关注黑马程序员、尚学堂等教学频道•适合级别全部级别•优势免费,内容新鲜,互动性强•网址www.bilibili.com脚本语言发展趋势脚本语言在人工智能中的应用脚本自动化与DevOps结合Python已成为人工智能和机器学习领域的主导语言,这一趋势预计将持续加强主要应用包括数据分析与处理使用NumPy、Pandas等库进行高效的数据操作和分析,为机器学习模型准备数据这些库提供了类似数组和数据框的数据结构,以及丰富的函数用于数据清洗、转换和可视化机器学习模型构建通过Scikit-learn、TensorFlow、PyTorch等框架构建和训练各种机器学习模型,从简单的线性回归到复杂的深度神经网络Python的简洁语法和丰富的库使模型开发变得更加高效自然语言处理使用NLTK、SpaCy、Transformers等库处理和分析文本数据,实现文本分类、情感分析、机器翻译等功能近年来,大型语言模型如GPT系列的发展,使持续集成/持续部署NLP应用更加广泛脚本语言用于自动化构建、测试和部署流程,加速软件交付工具如Jenkins、GitLab CI等通常使用Shell、Python或JavaScript脚本配置自动化工作流计算机视觉基础设施即代码结合OpenCV、PIL等图像处理库和深度学习框架,实现图像分类、物体检测、图像生成等视觉任务计算机视觉技术正广泛应用于自动驾驶、医疗诊断、安使用Terraform、Ansible等工具,通过脚本定义和管理基础设施,实现环境的一致性和可重复性这种方法使服务器配置、网络设置和云资源管理变得可编防监控等领域程和版本化云服务自动化教学反馈与评估学生学习效果评估方法教学互动与答疑安排课堂实时互动课堂采用讲解-演示-练习模式,保证每个知识点都有互动环节使用在线投票、随机提问等方式增加参与度每次课程留出15-20分钟的专门答疑时间,解决学生当堂遇到的问题线上讨论群建立课程QQ群或微信群,方便学生随时提问和讨论指定每周2-3个固定时段在线答疑,并鼓励学生之间互相帮助定期在群内分享编程资源和行业新闻,保持学习氛围活跃一对一辅导为学习困难的学生提供额外的一对一辅导机会每周安排2-3个时段的线下或线上辅导预约,帮助解决个性化问题鼓励优秀学生担任助教,参与辅导工作,形成良好的学习梯队在线论坛使用校内学习平台或GitHub Issues功能建立课程讨论区,将常见问题整理成FAQ,方便学生查阅对高质量的问题和回答给予额外学分奖励,鼓励知识分享持续改进教学内容收集学生反馈1每单元结束后进行小型问卷调查,收集学生对教学内容、难度和方法的反馈期中和期末进行综合性评价,了解整体教学效果2分析学习数据通过作业完成情况、测验正确率等数据,识别学生普遍存在困难的知识点分析在线学习平台的使用数据,了解学生学习行为和偏好更新教学材料3基于反馈和分析,调整教学重点和难度,补充更多实例和练习定期更新案例和项目,保持与技术发展和行业需求的同步4教学方法创新尝试翻转课堂、对抗式学习等新型教学方法,提高学生参与度和学习效果引入新技术工具辅助教学,如在线协作平台、编程竞赛系统等课程总结核心编程思维1培养结构化思考和问题分解能力语言基础2掌握变量、数据类型、条件判断、循环等基本语法模块化编程3使用函数、模块组织代码,提高复用性和可维护性文件与数据处理4读写文件、处理各种格式数据、实现自动化任务实际应用能力5解决实际问题、调试代码、编写完整项目重要技能回顾技术能力软技能与学习方法•熟练掌握脚本语言基本语法和使用方法•培养独立解决问题的能力和自学习惯•能够编写结构清晰、功能完整的脚本程序•掌握查阅文档和搜索解决方案的方法•掌握代码调试和错误处理技术•形成良好的代码风格和编程习惯•理解模块化编程和代码复用的重要性•学会与他人协作完成编程任务•具备基本的算法思维和数据处理能力•提高分析问题和逻辑思考能力•能够使用版本控制工具管理代码•建立持续学习的意识和方法•了解软件开发基本流程和最佳实践•培养技术交流和表达能力继续学习的建议编程学习是一个持续的过程,没有终点建议同学们
1.持续练习,多写代码,多做项目,巩固所学知识
2.阅读优秀的开源代码,学习专业编程技巧和思想
3.参与开源社区和技术论坛,与其他程序员交流学习
4.关注行业动态和技术发展,保持知识更新
5.寻找实际问题进行练习,将编程应用到日常工作和学习中未来学习路径建议深入学习高级编程语言专业方向深耕掌握一门编译型语言建议学习C/C++、Java或C#等编译型语言,理解更底层的计算机原理,增强编程能力的全面性这些语言在大型软件开发、系统编程和性能关键应用中广泛使用学习数据库技术掌握SQL语言和关系型数据库MySQL、PostgreSQL,以及NoSQL数据库MongoDB、Redis的使用数据存储和管理是几乎所有应用程序的核心部分Web开发技术学习HTML/CSS/JavaScript前端技术,以及后端框架如Django、FlaskPython或ExpressNode.jsWeb应用是当今最常见的软件形式,掌握全栈开发能力非常有价值移动应用开发学习AndroidJava/Kotlin或iOSSwift原生开发,或使用Flutter、React Native等跨平台框架移动互联网时代,应用开发技能需求持续旺盛人工智能与机器学习学习数学基础线性代数、概率统计、微积分,掌握经典机器学习算法和深度学习框架TensorFlow、PyTorchAI是当前最热门的技术领域,应用前景广阔大数据处理学习Hadoop、Spark等大数据框架,掌握分布式计算和存储技术,以及数据挖掘和分析方法大数据技术在商业决策、科学研究等领域发挥着关键作用DevOps与云计算学习Linux系统管理、Docker容器化、Kubernetes编排和云服务AWS、Azure、阿里云使用现代应用部署和运维已经与开发紧密结合,形成DevOps文化互动环节学生提问与答疑123关于学习方法的问题关于职业发展的问题关于技术难点的问题问如何有效地记忆编程语法和函数用法?问学习脚本编程可以从事哪些工作?问如何理解和使用递归函数?答编程不需要死记硬背,而是通过大量实践来熟悉建议答掌握脚本编程可以胜任多种职业方向答递归是函数调用自身的过程,理解递归的关键•动手编写代码,解决实际问题•后端开发工程师-开发服务器端应用和API•确定基本情况递归终止条件•建立自己的代码片段库,记录常用功能•数据分析师-处理和分析大量数据•将大问题分解为同类型的小问题•查看官方文档和示例,理解函数的用途和原理•自动化测试工程师-编写测试脚本确保软件质量•确保每次递归都向基本情况靠近•参与编程挑战和小项目,强化记忆•DevOps工程师-自动化部署和运维流程•通过画图或手动跟踪执行流程加深理解•数据科学家/AI工程师-结合领域知识应用机器学习技术•开始时可以借鉴经典递归例子阶乘、斐波那契分享学习心得在课程互动环节中,学生们分享了各自的学习经验和心得学习资源共享我发现学习编程最有效的方法是教别人每当我遇到一个新概念,我会尝试向同学解释它,这迫使我真正理解它而不是表面记忆-李同学,计算机科学专业学生们推荐了一些学习过程中发现的优质资源对我来说,参与小项目是最大的动力源泉看到自己编写的脚本解决实际问题,哪怕只是自动整理文件或下载资源,也会带来巨大的成就感-王同学,软件•GitHub上的中文Python教程合集工程专业•B站编程UP主推荐名单•面向不同学习阶段的项目实践案例我建立了编程日记,记录每天学到的新知识和遇到的问题回顾这些笔记不仅能巩固记忆,还能看到自己的进步,很有成就感-张同学,数据科学专业•编程常见问题解决方案速查手册•各类开发工具的使用技巧汇总这些资源将在课程结束后通过在线学习平台共享给所有学生讨论脚本应用场景学生们分享了自己使用脚本语言解决的实际问题•自动整理下载文件夹,按文件类型分类•批量重命名照片并按日期组织•从网站定期抓取特定信息如商品价格致谢与联系方式感谢参与与支持首先,衷心感谢所有参与本课程的学生们!你们的积极参与、认真学习和宝贵反馈是这门课程成功的关键特别感谢在课程中担任助教的同学们,你们的辅助教学和答疑解惑工作让课程更加顺利同时,我们要感谢学校提供的教学资源和技术支持,包括计算机实验室、在线学习平台和各种软件工具感谢各位同行教师的建议和指导,帮助我们不断完善课程内容和教学方法我们也要感谢开源社区的贡献者们,你们创造的优质学习资源、开发工具和技术文档为编程教育提供了坚实基础30+100+50+10+课时实例代码练习题项目案例系统讲解脚本编程基础与应用涵盖各种实际应用场景从基础到进阶的编程练习实战项目巩固学习成果提供教学资源链接课程资料获取联系邮箱与社交媒体•课件下载学校教学管理系统→课程资源区教师邮箱teacher@university.edu.cn•示例代码GitHub仓库-github.com/scriptclass2023•练习题解答在线学习平台→作业反馈区助教邮箱ta@university.edu.cn•补充阅读材料课程网站→拓展资源课程讨论群QQ群:123456789•视频回放学校在线课程平台→录播区微信公众号编程学习圈推荐学习工具B站教学频道space.bilibili.com/scriptteacher•VSCode编辑器:code.visualstudio.com•Python官方下载:python.org/downloads GitHub组织github.com/scriptclass2023•Git版本控制:git-scm.com办公时间与地点•GitHub桌面版:desktop.github.com•Replit在线IDE:replit.com教师每周
二、四下午2-4点在计算机楼205室提供面对面答疑其他时间可通过邮件预约线上或线下咨询助教值班时间安排请参见课程网站本课程将持续更新和优化,欢迎提供反馈和建议下学期我们计划开设进阶课程,敬请期待!。
个人认证
优秀文档
获得点赞 0