python基础语法(二)------顺序,条件,循环语句,空语句,pass,continue,break这是我们python系列的第二篇文章,需要了解前文的小伙伴可以移步至:python基础语法(一)------常量,变量,类型,注释,输入输出,运算符摘要本文是 Python 基础语法系列的第二篇系统讲解 Python 的顺序语句、条件语句分支语句、缩进与代码块、空语句 pass、循环语句while 与 for以及continue 和 break的用法。目录1.顺序语句2.条件语句(分支语句)3. 缩进和代码块4.空语句pass5.循环语句6.continue和break7.人生重开模拟器的简单实现正文1.顺序语句默认情况下,python的代码执行顺序是按照从上到下的顺序执行的,依次执行print(1)print(2)由于顺序执行,结果只会是12而不可能是21或其他情况,这种按照顺序执行的代码,我们称为顺序代码2.条件语句(分支语句)python中的条件语句,跟C,Java中的条件语句是同一个概念,“如果满足…,则执行…;否则执行…”;但是与C,Java的模板上有些许不同.C/Java的条件语句语法格式:if(满足条件1){//执行语句}elseif(满足条件2){//执行语句}else{//执行语句}python的条件语句模板(注意标点,关键词)if条件1://(缩进)执行语句1elif条件2://(缩进)执行语句2else//(缩进)执行语句3不同:1.C/Java中间情况使用else if而python中使用elif2.C/Java中的执行语句一般用**{}大括号,括起来;而python中使用缩进**,不使用大括号3.C/Java中条件用()小括号括起来;而python中不用,而是条件冒号:3. 缩进和代码块代码块指的是一组放在一起的代码在python中使用缩进表示代码块,不同级别的缩进,程序的执行效果不同# 代码1ainput(请输入一个整数:)ifa1:print(hello)print(world)# 代码2binput(请输入一个整数)ifb1:print(hello)print(world)输入22时,代码1hello和world缩进在同一代码块,由于不满足条件没有结果输出;代码2中print(world)没有缩进,不属于if的代码块,所以无论条件是否满足都会执行。另外代码块还能嵌套代码块# 代码三a1input(请输入第一个整数:)a2input(请输入第二个整数:)ifa11:print(hello)ifa22:print(world)# 代码四b1input(请输入第一个整数:)b2input(请输入第二个整数:)ifb11:ifb22:print(hello)print(world)输入1 1时,代码三和代码四的结果是什么呢?基于缩进的方式表示代码块,带来的好处就是强制要求程序员要明确缩进,来明确代码及之间的相对关系.如果缩进书写不对,则直接报错.同时带来的坏处就是,如果缩进比较多,就容易分不清楚那个语句属于那个阶层.练习:判断年份是否是闰年?# 代码1c1input(请输入年份:)c1int(c1)ifc1%40:ifc1%100!0:print(f{c1}年是闰年)elifc1%4000:print(f{c1}年是闰年)else:print(f{c1}年不是闰年)# 代码2c1input(请输入年份:)c1int(c1)ifc1%40:ifc1%100!0:print(f{c1}年是闰年)elifc1%4000:print(f{c1}年是闰年)else:print(f{c1}年不是闰年)思考:代码1和代码2哪一个是正确的呢?答案是代码1 .这是为什么?4.空语句pass示例1:如果输入的整数是1,则输出hello worldxinput(请输入一个整数)xint(x)ifx1:print(hello world)这个代码也可以等价于xinput(请输入一个整数)xint(x)ifx!1:passelseprint(hello world)其中,pass表示空语句,并不会对程序的执行产生任何影响,只是占个位置,保持python语法格式符合要求.如果想表示空语句,直接去掉pass,是会报错的.5.循环语句有些操作需要循环执行,这种就要使用循环语句while循环:基本语法格式:while条件://循环体**示例:求1!2!3!4!5!num5total0whilenum0:sum1inumwhilei0:sum*i i-1totalsumnum-1print(total)for循环:基本语法格式:for循环变量inrange(循环变量初始值,循环变量结束值(取不到),步长)://循环体示例:求1-100的和sum0foriinrange(1,101,1):sumiprint(sum)注意循环变量的结束值我们写的是101,而不是一百,由于循环变量遵循左闭右开的规则,[1,101).当步长为1时,也可以省略不写.6.continue和break**continue**表示结束这次循环,进入下次循环示例:打印1-6的数字,3除外forjinrange(1,7):ifj3:continueprint(j)**break**表示结束整个循环示例:1-100的数,打印到3的时候不在进行打印(包括3不打印)forqinrange(1,101):ifq3:breakprint(q)7.人生重开模拟器的简单实现基于python基础语法一,二我们可以实现一个人生重开模拟器的建议版本.一下代码仅仅实现了一部分年龄段的事件.感兴趣的可以自己改进并完善代码.(注:该游戏没有经过策划,存在一些逻辑问题)QQ20261009-191425importrandomimportsysimporttimeprint(-----------------------------------)print( 花有重开日,人无再少年 )print( )print( 欢迎来到,人生重开模拟器 )print(-----------------------------------)# 设置初始属性# 颜值 体质 家境 智力 总和不能超过20 每一项取值都是1-10之间# 使用循环,使得玩家输入错误的时候,可以重新输入whileTrue:print(请设置初始属性(可用点数之和为20))faceint(input(请输入颜值(1-10):))strongint(input(请输入体质(1-10):))iqint(input(请输入智商(1-10):))homeint(input(请输入家境(1-10):)) 通过条件语句,对用户输入的属性值做出校验 这段逻辑使用elif也是可以的,效果一致 使用elif则是多个分支只进入一个,一旦某个条件满足,就不会执行其他分支 此处没有使用elif,但是使用了continue,一旦满足某个条件,continue就会使得循环从新开始 也就没有机会继续执行后面的代码了 ifface1orface10:print(颜值设置有误!)continueifstrong1orstrong10:print(体质设置有误)continueifiq1oriq10:print(智商设置有误)continueifhome1orhome10:print(家境设置有误)continueiffacestrongiqhome20:print(总的属性和超出20,设置有误)continueprint(初始属性设置完毕)print(fface{face},strong{strong},iq{iq},home{home})break 生成角色性别 使用random.randint(beg,end),就能生成[beg,end]随机整数 pointrandom.randint(1,6)ifpoint%21:genderboyprint(你是个男生)else:gendergirlprint(你是个女生) 设置角色的出生点 pointrandom.randint(1,3)# 根据家境设置出生点ifhome10:# 第一档print(你出生在北京,你的父母是高官政要)home1iq1face1elif7home9:ifpoint1:print(你出生在大城市,你的父母是大学教授)iq2elifpoint2:print(你出生在大城市,你的父母是企业家)home2else:print(你出生在大城市,你的父母是公务元)face2elif4home6:ifpoint1:print(你出生在三线城市,你的父母是医生)face1strong1elifpoint2:print(你出生在三线城市,你的父母是教师)iq1else:print(你出生在三线城市,你的父母是个体户)home1else:ifpoint1:print(你出生在农村,父母是辛苦劳作的农民)home-1strong1face-1elifpoint2:print(你出生在乡村,父母是小学教师)iq1else:print(你出生在穷乡僻壤,父母是无业游民)home-1strong-1iq-1face-1print(fface{face},strong{strong},iq{iq},home{home})# 幼年阶段forageinrange(1,11):infof你{age}岁的时候,# 生成一个[1,3]的随机数pointrandom.randint(1,3)# 接下来编写各种事件的代码#性别触发事件ifgendergirlandhome3andpoint1:info你的家人重男轻女非常严重,你被遗弃了print(info)print(游戏结束)sys.exit(0)# 体质触发事件# 使用elif是为了保证每年只触发一件事情elifstrong6andpoint3:info你生了一场病,if(home5):info在你父母的悉心照料之下,康复了strong1home1else:info你的父母太忙了,没有经历管你,你的身体更加糟糕了strong-1# 颜值触发事件elifface4andage7:info你长得太丑了,别的小朋友不喜欢跟你玩face-1if(iq5):info你决定好好学习,通过知识填充自己iq1else:ifgenderboy:info你经常跟别的小朋友大家strong1iq-1else:info你经常被别的小朋友欺负strong-1#智商触发事件elifiq5:info你看起来呆呆的ifhome8andage6:info你的父母决定把你送去上学iq1elif4home7:ifgenderboy:info你的父母鼓励你多运动,争取成为远动员strong1else:info你的父母鼓励你努力学习,改变自己的命运iq1else:info你的父母经常吵架ifpoint1:strong1elifpoint2:iq-1else:pass#健康事件else:info你健康成长,ifpoint1:info(你看起来更结实了.)strong1elifpoint2:info你看起来更好看了.face1else:info你变得更聪明了.iq1# 青年时期forageinrange(11,19):infof你{age}岁的时候,pointrandom.randint(1,3)# 根据智商触发事件# 根据年龄触发事件ifiq5andage11:info你成功考上了重点初中.iq1ifiq7:ifpoint1:info你当上了学习委员.iq1elifpoint2:info你当上了班长.strong1face1else:info你当上了团支书.strong1elifiq5andage11:ifpoint1:info你考上了普通初中,elifpoint2:info你考上了体育类初中,strong1ifstrong6:ifpoint1:info你当上了体育委员.strong1elifpoint2:info你当上了劳动委员.strong1else:passelifpoint3:info你考上了美术类初中,face1ifface5:info你当上了文艺委员.face1else:passelif11age13:ifpoint1:info你交到了一群知心朋友.elifpoint2:info你被你的一个朋友背刺了.else:passelifiq7andage14:ifpoint1:info你的中考成绩优秀,被重点高中录取.iq2elifpoint2:info你的中考成绩良好,被普通高中录取.iq1else:info很遗憾,你没有考上高中,被职业中学录取.iq-1elifiq7andage14:ifpoint1:info很遗憾你没有书可以读了,只能回家卖红薯.ifpoint2:info很遗憾你没有书读了,但是彩票中了500万.elif14age17:ifpoint1:info由于高中压力,你玉玉了.elifpoint2:info你度过了一个美好的高中生活,交到了一群良师益友.elifhome10andage17:info你爸爸妈妈决定送你出国留学elifiq7andage17:ifpoint1:info你考上了清华.elifpoint2:info你考上了211else:info你考上了职业院校else:info回家耕田了print(info)print(fface颜值{face},体质strong{strong},智商iq{iq},家境home{home})time.sleep(1)