项目4:人机交互设计项目
───自动售货程序设计
梁玉华 山东昌乐二中
随着科技的不断发展,计算机的出现引发关于“人机交互”的研究已经有半个世纪的历史。从最早的二进制大型计算机到现在的人工智能,几乎全世界的高科技精英们都在为人机交互的发展和前进不懈努力,未来人们生活的各个领域,人机交互将无处不在。
自动售货机是人机交互技术在生活中的一项典型应用,本项目将以“自动售货程序设计”为主线,经历生活问题分析--抽象建模--算法设计--自动化实现--迁移应用算法思想解决相关问题的全过程,从中体验人机交互技术应用,感受利用计算机解决问题的一般过程和方法,领会数字化世界中思考和解决问题的方法,发展利用计算机解决问题的思维方式。
1.体验“自动售货”问题分析、抽象建模、设计算法过程,能用自己的话解释算法概念与特征,会选用恰当的描述方法和控制结构表示算法。
2.综合运用Python基础知识(如数据类型、变量、字符串、常用操作符等)和三种程序结构编程实现用屏幕模拟自动售货过程,并正确调试运行程序。
3.分享交流项目成果,总结计算机编程解决问题的基本方法,概述算法在问题解决中的作用。
4.任选生活中人机交互应用的案例,分析计算机解决问题的过程及方法,理解人机交互技术。
运用Python编写一个简易自动售货程序,体验“人机交互”。具体要求:
1.程序编写符合python语法规范,运行流畅,能正常退出。
2.能实现基本的商品上货、选货、付款、出货功能,在此基础上可适当开发其他功能。
3.程序要灵活运用顺序、选择、循环结构,满足基本的人机交互需求。
第一学时:分析问题, 抽象建模
当我们用计算机解决问题时,首先要分析问题,然后根据问题的要求选择合适的软件或者自己编写程序来解决问题。本学时就来探究一下“编程实现自动售货”时如何分析问题,建立模型?
【体验探索】
体验自动售货机购物流程
自动售货机,英文名(Vending Machine,VEM),是一种能根据投入的钱币自动付货的机器,是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。常见的自动售货机有饮料自动售货机、食品自动售货机、综合自动售货机、化妆品自动售货机等。下面通过视频进一步了解自动售货机购物流程。
【分析问题】
自动售货机是如何实现自动售货的?试用自己的话概述主要过程。
提示:可以从人和机器两个角度考虑,注意用关键词描述主要过程。
思考:哪些环节需要进行人机交互?如何实现?
【建立模型】
通过以上分析可以得出,实现自动售货需要解决以下几个问题:(1)上货(2)选货(3)付款(4)判断(5)找零(6)出货
下面结合这几个问题列出每一问题具体实现的步骤,完成自动售货方案。
自动售货方案
主要过程 | 具体实现步骤 |
上货 | |
选货 | |
付款 | |
判断 | |
找零 | |
出货 |
人机交互在生活中的应用非常广泛,如地铁站自动售票机、校园一卡通圈存机、楼宇电梯控制面板、停车厂收费管理系统、自动取款机等,请结合生活或学习需求,自选案例,根据想要解决的问题,分析、描述出求解的具体过程。
第二学时:设计算法
简单的说,设计算法就是将第一学时中提出的方案具体化,列出解决问题的方法和步骤;描述算法就是将这些方法和步骤用一种可理解的形式表示出来。本学时我们就来探究如何设计、描述“自动售货”的算法。
【体验探索】
生活中的算法
“算法”这个词听起来高大上,实际上在我们生活中随处可见,比如菜谱就是一个算法,是一个饭菜制作的流程,解决我们如何做饭的问题。分析如下:
菜谱:拌黄瓜 1.黄瓜洗干净。 2.放在案板上,用刀拍开,切小块。 3.蒜切末,花生用刀碾碎。 4.黄瓜加入蒜末、花生粒、生抽、芝麻油、香醋,充分搅拌均匀入味,即可。 主要特征: 有穷性:拌黄瓜,有4个步骤 确切性:每个步骤目标明确。 输入项:黄瓜、蒜、花生、生抽、芝麻油、香醋 输出项:拌黄瓜这道菜 可行性:每个步骤目标明确,能够在有限时间内完成。(拌个黄瓜也就5分钟)【设计算法】
依据第一学时中确定的“自动售货方案”,尝试用流程图的形式描述出用计算机解决此问题的具体过程。
提示:
1.流程图和描述“菜谱”算法的自然语言都是描述算法的基本方法。
2.流程图是用图框的方式把具体的实现“自动售货”的过程描述出来。一般
【总结梳理】
结合实例谈谈你对算法及其特征的理解?比较不同算法描述方法的优势和不足。
欧几里得算法又名辗转相除法,其算法可用下图所示的流程图表示(图中%表示取余运算),认真阅读流程图,分析该算法实现的功能。
第三学时:编写程序,实现自动售货
算法是程序设计的灵魂,如何让计算机机械式的运行“算法”还得通过编写程序去实现,本学时我们就尝试利用Python语言编写程序模拟实现自动售货功能吧。
【体验探索】
如何实现“上货与选货”
当我们使用自动售货机购物时,自动售货机会通过菜单给用户呈现商品列表(上货),用户通过输入商品编号等信息选择商品(选货),然后就可以付款购物了。那么怎么通过程序向屏幕输出商品清单?我们又是怎样输入商品编号进行购物的呢?抓紧上机体验一下吧。
小贴士:Python中input()函数用于实现人机交互。
【编程实践】
※探究一:编写程序实现付款、判断、找零与出货。要求如下:
①文件名:“小组+姓名+自动售货程序.py”
②功能:能根据用户所选商品输出付款价格,并提示用户投币,正确判断后输出找零及出货信息。
③附加:其他功能可根据基础自主扩展。
提示:
1.要完成这个任务,需要根据不同的商品选择进行不同的数据处理,这就需要用到程序的选择结构。请结合提供的范例2和学习资源3,先学习选择结构的用法,然后再尝试实现探究一任务。
2.计算付款价格时需要用到数值计算,但input()函数返回值是字符型数据,要想进行数值运算还需进行数据类型转换。
※探究二:如何实现继续购买商品?要求如下:
①文件名:“小组+姓名+自动售货程序.py”
②功能:在用户购买商品之后增加继续购买询问,如果用户继续购买则循环执行前面的程序,直到用户按下Q键退出系统。
③附加:其他功能根据自己基础自主扩展,使程序更加完善。
提示:
1.要实现循环购买商品,需要用到程序循环结构。因此完成该任务前,请先结合范例3和学习资源,熟悉循环结构的用法,再修改完善程序,实现购物完毕后输入Q退出系统,否则继续购买商品功能。
2.如果用户需要重复购买商品,应该重复执行哪部分程序?
【总结梳理】
编写自动售货程序时用到了哪些程序结构?有哪些基本使用规则?
本学时我们通过编程用计算机模拟了自动售货购买商品的上货、选货、付款、判断、找零、出货等基本过程。学有余力同学可根据个人基础,自主开发自动售货的其他功能(如微信、支付宝付款等 ),分析并进行编程实现。
第四学时:调试功能,完善程序
程序调试是程序设计过程中一个很重要的环节。调试的目的就是测试功能,发现错误,研究错误原因,并进行改正。得到运行结果后,还需要对结果进行分析和验证,判断其是否正确和完整。本学时就来调试运行“自动售货程序”,并结合人机交互的实际需求,从界面呈现等方面进行改进。
【功能测试】
1.测试程序是否正常运行,对发现的错误进行及时修改。(可参考“学习资源6:常见问题及处理”)
2.小组内互换程序并运行,对运行的结果进行分析和验证,判断其是否正确和完整。
【程序完善】
从人机交互角度考虑,当前自动售货程序还有哪些方面需要改进?请根据你的思考和设计,完善程序。
自选生活中的人机交互案例,编程实现并调试运行,小组内分享交流。
第一学时学习资源
1.用计算机解决问题的一般过程
计算机具有计算速度快、准确性高、存储容量大等特点。因此,利用计算机解决问题,能在某种程度上提高问题解决的效率。例如,自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。自动售货机作为新兴市场上一种方便快捷的交易场所,被越来越多的地区所广泛接受。
用计算机解决问题即让计算机按照程序执行指令。当我们遇到需要用计算机解决的问题的时候,可以是已有的程序,也可以根据需要自己编写程序。如果利用计算机编程方式进行问题求解时,通常需要经历以下过程:
即:首先需要通过分析找出解决问题的方法和步骤;然后将待处理的信息用计算机能识别的方式表示,使之成为计算机能处理的数据;最后调试程序,使之无误并能顺利运行。
当然,根据问题求解的需要,中间可能要反复修正, 直至问题得到有效解决。
例如:用计算机程序控制交通信息灯“红灯变绿灯”
分析问题
用计算机编程解决问题时,需要对问题进行分析,明确问题的目标和条件等,将问题进行抽象,并通过建模的方式,界定和描述问题。问题描述的方式并不唯一,有的问题可用数据模型描述,有的问题可用文字、表格或图形等形式描述。
“红灯变绿灯”问题中,信号灯的初始状态为红灯(禁止通行),红灯要持续显示一段时间,然后显示绿灯(准许通行),如下表所示:
设计方案
一般包括以下几个环节:
(1)根据需求分析,可将问题按照求解过程分解为若干个相对独立的功能,每个功能完成一个特定的任务。如果分解的某些功能仍然比较复杂,还可再进行细分,如图3.2所示
例如:在设计“红灯变绿灯”问题的解决方案时,根据前面的问题分析,需要考虑信号灯由初始状态到终止状态的变化过程,因此该问题可以分解为以下三个功能。
(2)针对分解的各个特定功能分别进行详细的操作步骤设计,给出问题求解的具体过程和方法,即进行算法设计。
编程调试
(1)编写程序是用一种计算机能接受的程序设计语言来描述问题求解的算法。在计算机领域,程序是一组可执行的计算机指令。程序设计语言是编写程序所使用的计算机语言。
(2)调试程序是查找和改正程序中存在的错误,使程序能顺利地执行,得出正确结果。
第二学时学习资源
1.认识算法
在日常生活学习中,人们经常会用到算法(Algorithm)知识,只是可能很少意识到。如有这样一个故事《农夫过河》:一个农夫带着一只狼、一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和一件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊,羊会吃白菜,所以农夫不能留下羊和白菜自己离开,也不能留下狼和羊自己离开,而狼不吃白菜。请问农夫如何做才能将所有的东西运过河?试用自己的语言描述解决问题的过程。----这就是设计算法。
在计算机领域,算法是一个精心设计的运算序列,描述了计算机如何将输入转化为输出的过程。计算机会按照算法规定的步骤执行操作,实现问题求解,这在整个问题解决过程中起着重要的作用。
例如:下表中所示的求两个正整数最大公约数的问题,应用的是我国古代《九章算术》中记载的“更相减损术”,其方法为“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
可见,计算机领域中算法就是用计算机求解某一问题的方法,是能被机械地执行的动作或指令的有穷集合。广义的算法就是解决问题的方法和步骤。每一个能能被解决的问题,其中都包含着算法。
2.算法一般具有以下特征:
输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件。如:长方形的长为10cm,宽为5cm,计算其面积为多少?就没有输入,只有输出。
输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。如:长方形的长为10cm,宽为5cm,计算其面积和周长各为多少?就有2个输出。当然,也可有多个输出。
有穷性:一个算法必须保证执行有限步之后结束;也就是说,一个算法包含的步骤是有限的。如:①给s赋值为1 ②将s的值增加1 ③重复步骤②是否正确?
确定性:算法的每一步骤必须有确切的定义,不能有歧义性。如:这是一个非常好说话的人?是hǎo说话还是hào说话?
可行性:运算中的算法和操作上都是能够精确地进行,能够按照执行得出正确的结果。如:①x= -2 ②计算x的平方根 是否正确?
3.描述算法
算法的描述主要有自然语言、流程图、伪代码。
(1)自然语言是人们日常所用的语言。用自然语言描述就是用人们能读懂的简短语句对算法的步骤进行描述。如活动1中提到的《农夫过河》的算法,用自然语言描述如下:
先带羊过去,自己回来,再把白菜带过去,带羊回来,接着带狼过去,自己回来,最后带羊过去!这样就全部过去了!!
(2)流程图也叫程序框图,它是算法的一种图形化表示方法。用流程图描述的算法直观易读,问题解决的步骤清晰简洁,算法结构表达明确,适合初学算法的人员使用。
如:求圆面积和烧水算法的流程图表示
★流程图中常用的符号及意义:
(3)伪代码描述算法是一种采用类似于程序设计语言的代码来表示算法。伪代码没有固定的、严格的语法规则,只要定义合理,没有矛盾即可。
如“倒计时15秒”的算法用伪代码描述为:
用伪代码描述算法回避了程序设计语言严格的书写格式,保持了语言叙述准确、无二义性的优点,结构性强,比较容易书写和理解。
【拓展阅读】
1.为什么要学习算法
算法是一个专业术语。我们在生活和学习中会经常遇到算法。例如,楼宇电梯通常按照一定的算法响应用户请求,合理停靠到相应的楼层;铁路网络订票系统按照一定的算法设置订票模式,高效服务用户。
智能时代,算法已经广泛应用于各领域。许多专家通过分析行业的运行规律、界定问题,有针对性地设计算法、建立模型,应用信息技术实现模型,创造出新的产品,创生出新的产业。例如,通过设计算法,在网络环境下实现“互联网+单车”,催生出“共享单车”经济产业,解决短距离出行不便问题。
中学生学习一些算法知识,了解算法的基本设计方法,可以深入理解身边数学化工具的特征,能够利用算法思想解决实际问题,提高学习和生活效率,更好地融入数字化社会。
2.算法与数字生活
算法与数字生活息息相关,如使用机器人清理房间、通过智能运动手环进行科学健身,输入用户口令安全登录账户等,算法都在其中起着重要的作用。借助高效的算法和优化的程序,我们可以更加快捷方便地解决越来越多的问题,提高生活、工作和学习效率。
用数字化工具解决问题离不开程序的控制,而程序的核心是算法设计。算法描述了解决问题的步骤,程序则是用某种程序设计语言将设计好的算法进行具体实现,从而实现自动化的问题求解。
例如,空调具有定时开关机功能,就可以通过倒计时算法来实现。在设定关机时间后,系统将进行倒数计数,当计数结束时就会发出关机指令,关闭空调。
再如,某城市公交车票价2元,乘客可以刷卡乘车。刷卡时,若公交车卡余额不足2元,提示“请投币”;若余额大于或等于2元但小于10元,提示“余额即将不足”;若余额大于或等于10元,提示“欢迎乘车”。用流程图描述该功能实现的算法如下图所示:
图4.6公交车刷卡流程图
第三学时学习资源
1.Python语言基础语法
(1)数据类型
在编写程序解决问题的过程中,为了更好地处理各种数据,程序设计语言提供了多种数据类型。Python语言中常见的数据类型如下表所示:
Python语言中还提供了一些可进行数据类型转换的内置函数,常用的如下表所示:
(2)常量、变量
常量:是指程序运行过程中,其值不能改变的量,例如,1024,“red”等。
变量:是在程序运行过程中,其值可能改变的量,是内存中存放数据的存储单元,用变量名来表示。
变量命名规则:
变量名可以包括字母(含汉字)、数字和下划线(_),但不能以数字开头。例如,name2是合法变量名,而2name是非合法变量名。
变量名区分大小写,例如,myName、MyName是不同的变量。
不能用系统关键字作为变量名。例如,python语言中常用的系统关键字有for、in、if、continue、break、else、False、True、and、not、or等。
(3)运算符与表达式
运算符标明了对操作数(参与运算符计算的数据)所进行的运算,它与操作数连接而成的有意义的式子被称为表达式。例如,2+3是表达式,其中的2、3是操作数,+是运算符。
Python中常用的运算符有:算术运算符、关系运算符、逻辑运算符。
算术运算符有加(+)、减(-)、乘(*)、除(/)、取余(%)、幂(**)整除(//)等。
关系运算法如下表
逻辑运算符如下表
运算优先级
如果两个或多个运算符出现在同一个表达式中,要按优先级确定运算顺序。基本规则:算术运算符>关系运算符?逻辑运算符。但要注意:
当表达式中出现“()”时,运算级最高,应先运算“()”内的表达式。
同类运算符中也有不同的优先级。例如,逻辑运算符的优先级为:not>and>or。
(4)赋值语句
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
2.语句与程序结构
程序的主体是由语句组成的。包括赋值语句、控制语句和输入输出语句等。其中控制语句决定了程序执行的路径,确定了程序的结构。程序设计的三种基本结构包括顺序结构、选择结构和循环结构。
(1)顺序结构
是指程序的执行按语句的排列顺序从上到下依次执行,直至结束。
编写程序一般包含输入数据、处理数据和输出结果三个步骤。Python语言主要用input()函数实现数据输入,用print()函数实现数据输出。例如:
读取键盘输入
Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。input 可以接收一个Python表达式作为输入,并将运算结果返回。
屏幕输出
Python提供了 print() 函数用于显示输出内容。
(2)选择结构
程序设计中很多问题不是简单地依次顺序执行,有时需要根据条件有选择地处理,这就用到选择结构。例如,在“自动售货机”问题中,选择商品界面选择“1”时,代表“可乐”被选中。因此,程序设计时就需要利用选择结构,对“哪个键被按下”这一状态进行判断。
在程序的选择结构中,某些语句会受到条件的制约,根据条件成立与否有选择地执行。选择结构利用条件语句,通过判断表达式的值(True 或 False),决定程序执行的分支。单分支结构和双分支结构是常见的两种选择结构,在 Python 语言中是由 if 语句实现的,基本格式见下表:
注意:①其中的“:”不能省略。
②python语言中用缩进的方式标识语句块,表示语句之间的层次关系。同一语句块中的语句具有相同的缩进量。
例如,判断一个正整数奇偶性的方法通常是:如果一个正整数x 能被 2 整除,那么这个数为偶数,否则为奇数。
程序代码如下:
x = int(input("请输入一个正整数:"))
if x % 2 == 0:
print(x, "是偶数。")
else:
print(x, "是奇数。")
(3)循环结构
在解决问题过程中,还会遇到需要重复执行某些操作,才能得到最终结果的情况。例如,猜数字游戏中猜一次不对,还可以有下一次机会。
使用循环结构时,一些语句在某一条件成立时,被重复执行,直到条件不成立时,才结束重复执行。这个条件称为循环控制条件,被重复执行的语句块称为循环体。
Python语言提供了两种基本的循环语句:while语句和for语句。
①while语句
基本格式为:while表达式:
语句块
其中表达式是循环控制条件,其值为布尔值(True或False),当表达式的值为True时,执行循环体语句,否则就退出循环,执行下一条语句。注意表达式后边的冒号不能省略。例如:
②for语句
基本格式为:for 循环变量 in 序列:
语句块
For语句每次从序列中取出一个元素赋值给循环变量(变量初始值为序列中的第一个元素值),当依次访问完序列中所有的元素后,循环结束。注意后面的冒号也不能省略。例如:
在for语句中,循环次数由序列中元素的个数决定,常用于确定循环次数的问题解决。而对于不能确定次数的情况,需要使用while语句。实际上,while语句既可以实现不确定次数的循环,也可以实现确定次数的循环。
③break语句和continue语句
在循环体中,可以用break语句和continue语句控制程序的流程。
break语句用于终止某个循环,使程序跳到循环体以外的第一个可执行语句。
continue语句用于终止本次循环进入下一次循环,即跳过循环体内还未执行的语句,进入下一次循环的判定。
3. 输入与输出函数使用
(1)输出函数
基本格式:print(输出内容)
用途:可以将结果输出到IDLE或标准控制台上。
说明:输出内容可以是数字或字符串(字符串需要使用英文双引号引起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将计算结果输出。
例如:
a=100 #变量a,值为100
b=5 #变量b,值为5
print(9) #输出数字9
print(a) #输出变量a的值100
print(a*b) #输出a*b的结果500
print(″go big or go home″) #输出go big or go home
多学两招:
在python中,默认情况下,一条print()语句输出之后会自动换行,如果想要一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。例如:
a=10
b=6
print(a,b) #输出变量a和b,结果为:10 6
(2)输入函数
基本格式:变量 = input("提示文字")
说明:
(1)变量可以保存输入的结果,双引号内的文字用于提示要输入的内容。
例如:要接收用户输入的内容并保存到变量tip中,可以使用下面代码:
tip=input("请输入文字:")
(2)无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。
例如:想要接收整型的数字并保存到变量age中,可以使用下面的代码:
age=int(input("请输入数字:"))
(3)常用数值转换函数:
int()转换为整数类型
float()转换为浮点型(小数)
eval()转换为数值
第四学时学习资源
调试程序的目的就是发现错误,研究错误的原因,并进行改正。得到运行结果后,还需要对结果进行分析和验证,判断其是否正确和完整。
1.常见问题及处理办法
(1)变量未定义
错误提示:
解释:这类错误是因为用到一个变量,而这个变量却没有在计算机中定义。就像你让一个人去干活,但这个人却不存在一样,所以计算机就懵圈了。
(2)格式错误
解释:这类错误是该缩进的地方没缩进,python语言对格式的要求严格。
当程序反复调试、运行正常并得到正确结果后,就实现了前期设计的算法,解决了相应的问题。
当然,要想更深入地了解算法与程序设计,还需要进一步学习编程语言、算法设计以及数据结构等知识,创造性地利用计算机解决问题。
2.Python常见错误提示
(1)TypeError:类型错误,对象用来表示值的类型非预期类型时发生的错误
· 错误例子:
age=18
print(‘我的年龄是’+age)
· 报错信息:TypeError: can only concatenate str (not "int") to str
(这是类型错误,提示必须是一个字符串,不能是数字。)
· 解决方法:在使用“+”做拼接的时候,必须使用字符串,或者把数字转化成字符串。
· 正确代码:
age=18
print(‘我的年龄是’+str(age))
(2)AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
· 错误例子:
tp=('1','3','5')
tp.append('7')
print(tp)
· 报错信息:AttributeError: 'tuple' object has no attribute 'append'
提示: 属性错误:元组对象没有“append”的属性,简单来说元组是不可变对象
· 解决方法:把元组换成列表。
(3)NameError:试图访问的变量名不存在。
· 举个简单的例子,只运行一行print(a),会报错:NameError: name 'a' is not defined。
· 简单来说,就是变量a没有定义,解决方法是在前面给a赋值,比如加上一行a=''。
· 还有一种需要小心处理的是:变量或者函数名拼写错误。如:
name= '卡西'
print('My name is ' + nane)
报错信息和上面一样:NameError: name 'nane' is not defined。这类错误只要根据报错信息,细心检查下拼写,就能很快解决。
(4)SyntaxError:语法错误,代码形式错误
· 报错信息为:SyntaxError: invalid syntax
提示是:语法错误,非法的语法。
· 解决方法:
当报错的时候,要注意回到错误信息的那一行,然后从下往上,慢慢查找,此处这个程序就是因为if语法忘了在判断语句后面加“:”,所以导致的错误。
另外,初学者写代码时要注意使用英文符号,这是大家经常犯的错误
(5)KeyError:在读取字典中的key和value时,如果key不存在,就会触发KeyError错误。
· 举个小栗子:
dict={'a':1,'b':2,'c':3}
print(dict['d'])
报错信息为:KeyError: 'd'。
· 第一种解决方法,首先测试key是否存在,然后才进行下一步操作,如:
(6)IndexError:索引错误,使用的索引不存在,常索引超出序列范围,序列中没有此索引(index)
· 报错信息:IndexError: list index out of range
提示:索引错误,列表索引超出了范围。
· 解决办法:
回头看列表的长度,索引是要小于列表的长度的。上面的列表长度是5,而索引却要打印第七个,所以是超出了列表的长度
(7)IndentationError:缩进错误
· 报错:IndentationError: expected an indented block
原因:缩进有误,Python的缩进非常严格,行首多个空格,少个空格都会报错。
由于不熟悉python编码规则,不易查找,所以会成为新手常犯的一个错误。像def,class,if,for,while等代码块都需要缩进。
(8)TabError: Tab 和空格混用
相邻的两句的缩进需要统一使用tab或统一使用空格,不能混用。否则就会出现以下报错:TabError: inconsistent use of tabs and spaces in indentation。
· tab键本质上是制表符,而不是缩进符,不同的文本编辑器中制表符代表的空格宽度不一,如果代码需要跨平台或跨编辑器读写,建议不要使用制表符(tab键)。
心得:inconsistent use of tabs and spaces in indentation
错误处理方法:
把报错的行光标放到第一个字母前,backspace直接删除到和上一行接起来,然后按回车就行了。
1.Python 3 软件官方下载网址
https://www.python.org/downloads/
2.Python简介
https://baike.baidu.com/item/Python/407313?fr=aladdin
3.算法与流程图
https://baike.baidu.com/item/%E7%AE%97%E6%B3%95%E6%B5%81%E7%A8%8B%E5%9B%BE/22042122?fr=aladdin
4.Python其他基础语法
http://www.runoob.com/python3/python3-basic-syntax.html
5.Python运算符
http://www.runoob.com/python3/python3-basic-operators.html
6.常用经典算法介绍
https://blog.csdn.net/weixin_40335368/article/details/78301362
7.Python编程实例
https://www.cnblogs.com/wu-chao/p/8661939.html
8.“Python语言程序设计”慕课:
https://www.xuexi.cn/660016ca412190a98bf8376be37ee571/9b0f04ec6509904be734f5f609a3604a.html?from=singlemessage
诊 断 内 容 | 实际学习效果 | 我的困惑 |
能否用自己的话解释算法概念及其特征? | ★ ★ ★ ★ ★ | |
程序的三种结构是否能灵活应用? | ★ ★ ★ ★ ★ | |
流程图各符号的含义是否清楚? | ★ ★ ★ ★ ★ | |
自动售货机工作过程是否清楚? | ★ ★ ★ ★ ★ | |
自动售货算法能否用流程图正确表示? | ★ ★ ★ ★ ★ | |
自动售货程序是否调试运行成功? | ★ ★ ★ ★ ★ |
1.结合项目实施效果,完成学业质量自我评价。
2.结合自己的学习与理解,总结本项目用到的知识及技能,用思维导图呈现在下列方框中。