第四章 基本控制结构的程序设计.

Slides:



Advertisements
Similar presentations
達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
Advertisements

主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
台灣文學館之旅.
單車環島之旅 組員: 495D0072 胡閎智 495D0074 何冠緯 495D0020 王怡雯 495D0047 葉亭君
 耕地分割 及 執 行 內政部地政司 視察:林玲女.
~完備、周密、迅速 ~ 行政院農業部畜產試驗所
建筑设计基础讲义 (02-1) 建筑水彩渲染.
現代文學導讀 (中國現代散文發展的歷史軌道)
谨以此文—— 送给所有的人.
第十課 第九味目錄 徐國能 課文 注釋 問題與討論.
方 孝 孺 指喻.
保護地球人人有責:我能做的事 若想讓地球、人類社會明天會更好的話,可以考慮日常生活中採取什麼綠色行動,逐步恢復按上天設計大自然規定的方式做人,從而減少個人的「生態足印」,爭取可以延續的未來。 
小 王 子 <第六組> 組長: 謝汶芳 組員: 劉佳蓉 曹展愛 陳建妏
據說: 烏鴉有四種--- 巨烏 祥烏 鳳烏 慈烏~ 知恩 感恩 報恩.
桃園傅小弟遭刺青施虐事件 指導老師:高家斌 班級:幼保四甲 姓名與學號: 496I0004 程千芸、496I0010 林昀嫻
北科大學士學位 冷凍空調 甲、乙、丙 級技術士 三年工作經驗 大一階段 專精訓練 大三階段 回流訓練.
9.2.2 会计基本法律制度 一、会计机构和会计人员制度 二、会计核算制度
指導教授:林劭仁老師 組員:范紋綺、王宣惠、蔡雅玲 王思樺、陳可馨、吳芷容.
歡欣鼓舞過新年之四-跟年有關的故事 蘇澳國小 三年三班導師 張怡玲.
淺談中醫養生保健之道 國立中正大學醫務室 中醫科 楊明穎 醫師 中國醫藥學院 醫學士中醫師 高雄醫學院 藥學士藥師
只要有心 機器都可以成為食神 機電三甲  陳保翔  宓芳頡  雷家翔.
北極熊 華德學校 姓名:黄景山.
數學家 阿基米德 6C 李俊熙.
一般情况碰撞 1 完全弹性碰撞 动量和机械能均守恒 2 非弹性碰撞 动量守恒,机械能不守恒 3 完全非弹性碰撞 动量守恒,机械能不守恒.
目錄 99年『 84電腦及相關服務』案件統計 機關端:資訊服務價格資料登錄流程 機關端及廠商端:資訊服務價格資料查詢流程
十堰管理部党委中心组“三严三实” 第三阶段专题学习
公共選擇理論 實踐大學 指導老師:林信雄.
孩子的心,我懂 怀仁全人发展中心 任兆璋 着.
第7章 行政执行.
派對慶祝 指導老師:黃瑞勤老師 S.3A 組長:葉慧敏(40) 組員:尹國青(30) 麥家欣(26) 利昭雯(16)
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
C#程序设计案例教程 第3章 程 序 结 构.
计算机与程序.
第4章 循环结构 程序设计2 本章主讲 赵家刚 计算机编程导论.
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
程序设计思想与方法入门篇 庄天红.
第 5 章 流程控制 (一): 條件分支.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
計數式重複敘述 for 迴圈 P
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
注意:教程中给出的所有示例代码请勿直接拷贝使用!会引起不必要的错误!
你最喜欢哪个季节?为什么?这些季节有什么不同?
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
河口生態系 紅樹林.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Presentation transcript:

第四章 基本控制结构的程序设计

相关研究表明三种基本程序结构可以写出所有的程序,它们是: 顺序结构 分支结构 循环结构

4.1用Python实现顺序结构 程序的入口从a开始,自顶向下,依次执行A代码块,B代码块,最后执行到b,那么a和b就是一种顺序结构的程序。而A代码块,B代码块放的是什么内容呢?它们的内容可以继续是一个顺序结构,又或者是分支、选择结构。这也叫做程序的嵌套,正是因为嵌套的存在,使得程序的执行顺序,可以灵活变化,从而实现不同的功能。 A B a b

【例1】:温度转换 问题分析和算法可以参考第二章的例2,温度华氏和摄氏温度两者对应关系是F=(9/5)C+32。 程序代码: celsius = int(input('请输入一个摄氏温度 : ')) fahrenheit=(9/5)* celsius + 32 print('华氏温度:') print(fahrenheit) 执行结果: >>> 请输入一个摄氏温度 : 33 华氏温度: 91.4

4.2用Python实现分情况决策程序 简单分支 双分支 分支嵌套 多分支

4.2.1Python简单分支 【例2】:在Python的IDLE环境下创建一个名为if_statement.py的程序,代码如下所示: 条件 成立 B 【例2】:在Python的IDLE环境下创建一个名为if_statement.py的程序,代码如下所示: numA=3 numB=4 if numA <= numB: print ("numB是比较大的数")

4.2.2Python双分支 A 条件 成立 B C 【例3】:在Python的IDLE环境下创建一个名为if_else_statement.py的程序,代码如下所示: numA=3 numB=4 if numA <= numB: print ("numB是比较大的数") else: print ("numA是比较大的数")

4.2.3Python分支嵌套 【例4】求三个数的最大值。 numA=3 numB=4 numC=5 if numA <= numB: if numC<numB: print ("numB是最大的数") else: print ("numC是最大的数") if numC<numA: print ("numA是最大的数")

4.2.4多分支结构 【例5】:在Python的IDLE环境下创建一个名为if_elif_else_statement.py的程序,利用多分支结构,求解三个数的最大值。代码如下所示: numA=3 numB=4 numC=5 if numA>=numB and numA>=numC: print("numA是最大值") elif numB>=numC and numB>=numA: print("numB是最大值") else: print("numC是最大值")

4.3用Python实现循环结构结构程序 请大家探讨如何求出1+2+3+4+……+100的结果? 在算法中,把这种从某处开始,按照一定条件,反复执行某一处理步骤的过程,叫做循环结构。它是可以循环执行某些语句的结构,能够在一定程度上减少程序的复杂性。它由循环条件和循环体组成,但存在一个上述结构都没有的安全隐患,那就是死循环。

在python中,提供了两种经常用到的循环结构: For结构 While结构

4.3.1Python的for循环语句 这种循环结构的语法如下: for迭代变量 in 序列或者迭代器 循环体 else: 表达式

4.3.1Python的for循环语句 【例6】:设计一个元组,并用循环结构依次显示其中的内容。在Python的IDLE环境下创建一个名为for_statement.py的程序,代码如下所示: generals = [ "李元霸", "宇文成都", "秦琼", "程咬金", "单雄信" ] print ("-- 武将列表 --") for x in generals: print ("武将姓名:",x) 上述代码输出结果如下: >>> -- 武将列表 -- 武将姓名: 李元霸 武将姓名: 宇文成都 武将姓名: 秦琼 武将姓名: 程咬金 武将姓名: 单雄信 讨论如何循环显示一个字符串呢?

【例7】检测字符串是否全是数字 输入一个字符串,用循环结构判断它的每一个字符是否为数字,若不是则输出“该字符串包含非数字字符”。 思考:如何对【例1】的“摄氏温度转换为华氏温度”输入数据进行判定,若输入的不是数字和小数点则提示“输入错误”

4.3.2Python的range()函数 如果需要遍历一个数字序列,可以使用Python中内建的函数range()。语法如下: range( start,end,step =1) range()会返回一个包含所有k的列表,这里start<=k<end,从start到end,k每次递增step。step不可以为零,否则将发生错误。需要注意的是start和end组成了半开区间,列表里的k取不到end。

4.3.2Python的range()函数 请说出下面几个序列所对应的内容: range(5) [2,5,8,11,14,17] [3,4,5,6] range(5) [0,1,2,3,4]

【例8】利用for range对鸡兔同笼问题进行求解 思维目标:穷举法思维

4.3.3Python的while循环结构 从该流程图可以看出: (1)只有一个入口。 条件 成立 B 不成立 C A 从该流程图可以看出: (1)只有一个入口。 (2)只有一个出口。(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。) (3)结构内的每一部分都有机会被执行到。 (4)结构内不存在“死循环”(无终止的循环)。

4.3.3Python的while循环结构 【例9】求解银行存款利息问题 已知银行存款利率为1.9%,编写程序计算并输出需要存多少年,10000的存款本金才会连本带利翻一番 。

这显然是一个迭代问题,而且是以年为单位,本金在发生变化,而这样的循环究竟要循环多少次呢?显然是这个问题要求解的结果,对于不知道循环次数的问题,使用while是非常方便的 本实例可以用如下代码实现: cunkuan = 10000 #本金10000元 years=0 while cunkuan<20000: years+=1 cunkuan=cunkuan*(1+0.019) print(str(years)+"年以后,存款会翻番") 程序运行结果如下: >>> 37年以后,存款会翻番

请大家讨论什么时候使用while,什么时候使用for方便?

4.3.4 break、continue和pass语句 与break语句不同,当continue语句在循环结构中执行时,并不会退出循环结构,而是立即结束本次循环,重新开始下一轮循环,也就是说,跳过循环体中在continue语句之后的所有语句,继续下一轮循环。 循环体可以包含一个语句,也可以包含多个语句,但是却不可以没有任何语句。如果只是想让程序循环一定次数,但是循环过程什么也不做的话, 使用pass语句,它不执行任何操作。

4.3.4Python的break、continue和pass语句 mylist = ["zope","Python","perl","Linux"] for technic in mylist: if technic == "perl": break else: print (technic) 答案为:zope Python

4.3.5循环结构应用 输出星号(*) 约瑟夫环

4.3.5循环结构应用------输出星号(*) 将一个星号(*)按照一定的规律输出,组成三角形、菱形等图形,是学习循环结构经常用到的应用案例。

4.3.5循环结构应用------输出星号(*) 解题思路: 双重循环 行数为i,每行星号的数量或者空格的数量为j for i in range(1,11): s="" for j in range(0,10-i): s +=" " for j in range(0,2*i-1): s +="*" print (s) for i in range(1,11): s="" for j in range(0,i): s +="*" print (s)

4.3.5* 循环结构应用------约瑟夫环 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列,这个问题也被称为约瑟夫环问题。

4.3.5*循环结构应用------约瑟夫环 一共有三十个人,从1-30依次编号。每个人开始报数,报到9的人自动出列,当有人出列后,从后一个人开始重新从1报数,以此类推。求出列的前十五个人的号码: 思路分析:该题目选择合适的数据结构很重要,为了使得出列的人不再重复报数,专门使用一个list数据结构存储出列的人,每个人报数前,先到该list中查找是否已出列来,如果出列不报数,否则报数。

4.3.5*循环结构应用------约瑟夫环 list=[x for x in range(1,31)] for x in list: print(x) print("被剔除:") del_number=-1 for i in range(1,15): #生成编号 j=0; k=del_number+1 while j<9: if(k==len(list)): k=0 if(list[k]!=-1): j=j+1 k=k+1 del_number = k-1 print(list[del_number]) list[del_number]=-1 #用-1标记被踢出的位置

实验内容 4.7.2 实验范例 1,3 4.7.3 实验内容(1),(2),(3),(5),(8)-(11)

4.4字符串数据操作 在第3章中,已经介绍了Python的数据类型,其中字符串数据类型,又称为文本类型,它在Python中使用频率很高,本节利用前面讲述的控制结构,专门介绍下针对这种数据类型的操作。

4.4.1字符串和List数据的相互转换 【例4-4-1】某字符串mystr存储了一个学生的兴趣爱好所有兴趣爱好,代码如下: 如何能快速的知道该生有多少项爱好?已知该生的兴趣爱好之间是用顿号进行分割的。 mystr="篮球、足球、兵乓球、羽毛球、电子游戏、看书、旅游、电影、音乐" li=mystr.split('、') print("该生的爱好有"+str(len(li))+"项")

4.4.1字符串和List数据的相互转换 【例4-4-2】:某字符串mystr存储的内容是一串数字“0122202341020303”,现在要求把该数奇数位置上的数字用‘-’代替。 程序代码如下: mystr="0122202341020303" print(mystr+"\n") li=list(mystr) for i in range(1,len(li),2): li[i]='-' mystr="".join(li) print(mystr)

4.4.2字符查找 如果需要在某个字符串中查找特定的字符,即可以通过对字符串进行遍历,又可以通过字符串的函数处理。  【例4-4-3】:在一个输入的字符串中查找是否有字符“梦”存在。 while True: str=input("请输入一个字符串(quit退出)\n") if(str=="quit"): break else: findok=False for mychar in str: if mychar=="梦": findok=True if findok: print("找到字符梦") print("没找到字符梦")

4.4.3字符串遍历 上个实例介绍了字符串遍历,但是for 字符 in 字符串这种类型的遍历是一种无序的遍历,即这种遍历只强调了字符有没有包含在字符串中,但是字符在字符串的哪个位置是无所谓的。接下来就介绍下字符串的有序遍历。  【例4-4-4】:输入任何一个数字,如果数字中的每位数字之和(最高位除外),等于最高位上的数,则输出找到了,否则输出找不到。 while True: sum=0 str=input("请输入一个数字(quit退出)\n") if(str=="quit"): break else: for i in range(1,len(str)): sum=sum+int(str[i]) if sum==int(str[0]): print("找到了") print("找不到")

4.4.4字符串截取 【例4-4-5】输入一个产品编码,识别其是否在市以及出厂日期 已知某个产品的编码是2320060214-345,该编码信息如下: 第1位为1表示该商品在市,为2表示该商品退市; 第2位表示商品的类别; 第3~10位表示商品的出厂日期; 第12~14位表示商品的编号;

源代码 while True: mystr=input("请输入一个产品编码(quit退出)\n") if(mystr=="quit"): break else: if mystr[0]=="1": print("商品在市,") print("商品退市,") myyear=mystr[2:6]+"年" mymonth=mystr[6:8]+"月" myday=mystr[8:10]+"日" print("商品的出厂日期是"+myyear+mymonth+myday)

实验内容 4.7.3 实验内容 (4),(6),(7) 4.6 习题与思考 4-8