洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句
所有的编程语言里都有判断语句和循环语句。
判断语句则是用来分支程序流程的
循环语句则是为了实现一个效果,让程序的规律性的重复操作
不用说,分支和循环自然在python里也是有的
一,条件判断:if,if……else
1.在python里if可以单独出现,也可以和else配套出现,但是else不能单独出现
这里则要提到一个在编程里一个共有的特性:
悬挂else:即出现多余或者不和if匹配的else,就叫悬挂else,当出现悬挂else是会导致程序报错的。但在python里强制限制else属于哪一个循环里,对缩进严格要求,所以不会出现悬挂else,也就是前面提到的【else不能单独出现】。
2.if格式:
a:
- if XX:
- suite(语句体套件)
b:
- if XX:
- suite
- else:
- suite
3.使用条件判断案列:
代码:
# -*- coding:utf-8 -*- print("猜一个幸运数字,游戏开始!")#提示游戏开始 temp=input("请输入你觉得对的数字:")#这一句是和用户交互得到一个值,并赋值给temp guess=int(temp)#这一句将temp变量转换成整形,方便下面的条件判断 if guess>8: print("大了")#如果guess变量大于8,则运行print else:#否则的话 if guess == 8: print("哇,猜对了")#如果guess等于8,运行print else: print ("小了")#如果不等于8也不大于8,运行print print("游戏结束")#提示游戏结
运行结果:
因为没有猜对,再运行两次:
第三次终于对了,判断语句就是这样使用的
不过这个小程序看起来还不够完善,可以优化一下:
# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!") guess=int(input("请输入你觉得对的数字:")) if guess>8: print("大了") elif guess == 8: #注意elif print("哇,猜对了") else: print ("小了") print("游戏结束")
这里elif等同于else+if
但是还是不够完善,因为每次运行代码只有一次猜的机会,觉得有点少了,可以猜多次吗?当然可以,所以得用上下面要说的循环
二,循环
在python里有两种循环,while循环和for循环,并注意在python里没有when语句和switch语句
1.while循环
1)格式:
a:
- while XX:
- suite
b:
- while XX:
- suite
- else:
- suite
是的,while语句可以和else配套使用
2)从实例中剖析while循环:
代码:
# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!") guess=int(input("请输入你觉得对的数字:")) while guess!=8: guess=int(input("请重新输入你觉得对的数字:")) if guess>8: print("大了") else: print ("小了") print("猜对了")
运行结果:
效果是实现了,但是又有个两个小问题:
问题1.为什么我要在while语句里还要在再一次为guess赋值
因为在当while运行时,首先判定的就是当第一次用户输入时能不能满足条件,满足条件则循环,而这里的不等于8,第一次输入是5,5确实不等于8,所以满足条件运行,但是,如果不重新赋值,guess则会在整个程序里一直指向5这个值,永远满足条件,永远循环,就成了一个死循环,直到耗尽你的计算机资源让计算机崩溃宕机为止:
不给guess再一次赋值的效果:
这里我把程序终止了,所以有个keyboardInterrupt键盘异常出现,关于异常的后面会讲解,暂时可以忽略
所以,在while里的那一句重新赋值很重要,防止发生死循环,并且切记,在使用循环时如果产生了死循环是编程的大忌
问题2.在第一次输入5的时候,并没有给出提示是大了还是小了,这个需要改善的
所以稍微改动一下代码:
# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!") while True: guess=int(input("请输入你觉得对的数字:")) if guess>8: print("大了") elif guess<8: print ("小了") else: print("猜对了")
运行结果:
这样就可以在第一次输入值时给出提示,但是你应该发现了,我已经输入了正确答案,程序还是没有退出,还在运行,这个情况要怎么解决呢?此时又需要一点新的知识——break和continue语句
break:用于满足条件时跳出本层循环,且只能跳过一层循环
continue:用于满足条件时跳过本层循环内的某一次循环,如果在本次循环内下面条件满足则运行完再进入下一次循环
上面的代码,我加入break后:
# -*- coding:utf-8 -*- print("猜一个幸运数字,游戏开始!") while True: guess=int(input("请输入你觉得对的数字:")) if guess>8: print("大了") elif guess<8: print ("小了") else: print("猜对了") break
运行结果:
这样的话,就完美的解决一个问题,并且前面那个死循环问题如果使用break也可以避免,但是代码还是有问题的,我只是给下解决了死循环这个问题的效果,所以不给出代码,只是做下演示:
继续看看break和continue的用法:
代码:
# -*- coding:utf-8 -*- i=1 while True: while i!=8: i+=1 #姑且认为同i=i+1,但其实不等价于,自己可以用id函数查看 if i<5: continue print('i的值目前小于5') if i==5: print('i的值为%d'%i) break print('跳出了内层循环') break print('跳出了外层循环')
运行结果:
感觉不大明显对吧,break应该很好理解,但是continue还是有点不大懂,对吧?这样,我去掉continue看看效果:
图解:
只能搞成这个样子了,还不懂的话,自己复制代码拿来运行,多体会
3)练习:用while循环打印斐波那契数列
代码:
# -*- coding:utf-8 -*- list1=[0,1] n1=list1[0] n3=n2=list1[1] n=int(input('请输入一个你希望打印出多少项斐波那契数列里的数:')) if n<1: print("输入有误!") while (n-2)>0: n3=n2+n1 n1=n2 n2=n3 n-=1 list1.append(n3) print('斐波那契数列的前%d项:'%len(list1)) print(list1)
结果:
2.for循环
1)说到for循环,就得说说迭代这个词
迭代:指的是按照某种顺序逐个访问列表中的每一项,for语句就是迭代最好的体现和解释
for循环和while循环差不多,不过for来得更简洁
2)格式:
a:
for XX in 表达式:
suite
b:
for XX in 表达式:
suite
else:
suite
3)实例:
是不是很好的解释了迭代这个词
for和while没什么差别,while能用的for都能用,if条件判断和break,continue语句都可以使用,所以不再练习举例了,不过你可以自己尝试用for循环输出一个斐波那契数列
但是for在有些方面优于while循环:
用for可以迭代的优势
比如用for可以很快的生成一个列表,这种方法叫列表生成器和列表解析,后面的章节会讲解
洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句的更多相关文章
- 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型
上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢? 整形(int) 长整型(long) 浮点型(float) 字符型(str) 布尔型(bool) 最常见的就这几种. 在 ...
- 详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...
- python实例 条件和循环语句
#! /usr/bin/python #条件和循环语句 x=int(input("Please enter an integer:")) if x<0: x=0 ...
- Python中的循环语句
Python中有while循环和for循环 下面以一个小例子来说明一下用法,用户输入一些数字,输出这些数字中的最大值和最小值 array = [5,4,3,1] for i in array: pri ...
- python中的循环语句-01
接触python已经一周时间,下面针对这一周python学习的情况做一梳理: 1)单行注释,使用一个#:多行注释,使用三个单引号(或者三个双引号)如: name = input("name: ...
- python之最强王者(3)——变量,条件、循环语句
1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...
- Python系列:三、流程控制循环语句--技术流ken
Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...
- python第三章:循环语句--小白博客
Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...
随机推荐
- [java核心技术01]__继承与多态、重载与重写、抽象类与接口
前言 前面简单学习了面向对象的知识,知道了其两个重要的特性,继承与多态,今天就围绕着面向对象的这两个特性,将继承与多态及相关的几个几个定义重载与重写,抽象类与接口的相关知识具体学习一下. 类的继承 关 ...
- Python 【web框架】之Flask
flask 是Python实现的轻量级web框架.没有表单,orm等,但扩展性很好.很多Python web开发者十分喜欢.本篇介绍flask的简单使用及其扩展. 文中示例源码已经传到github:h ...
- Notyf - 超级简单、响应式的 JS 通知插件
通知是网站的常用功能之一,可以用来显示消息.通告.提示等等.Notyf 是一款超级简单.响应式的 JS 通知插件,不依赖 jQuery 库,可以独立使用.赶紧试用一下吧! 在线演示 免费下载 ...
- 设计模式教程(Design Patterns Tutorial)笔记之三 行为型模式(Behavioral Patterns)
目录 · Strategy · When to use the Strategy Design Pattern? · Sample Code · Observer · When to use the ...
- JavaWeb学习(二十九)———— 事务
一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句 update from account set mone ...
- Python和Java分别实现冒泡排序
1.基本思想 冒泡排序的基本思想是对比相邻的元素值.相邻元素值比较,如果满足条件两者就交换,把较小的移动到前面,把较大的移动到后面,这样较小的元素就像气泡一样浮上来了.可以看出,冒泡排序的每一次循环都 ...
- Badge
The following plugin provides functionality available through Pipeline-compatible steps. Read more a ...
- 获取微信的access_tokey,处理json格式的数据
#region 获取微信凭证 public string GetAccessToken(string wechat_id) { string accessToken = ""; D ...
- python基础小结
1.常用的格式符号 2.input函数 3.在程序中,看到了%这样的操作符,这就是python中的格式化输出 age = 18 name = "xiaohua" print(&qu ...
- Java学习笔记之——静态方法
1.方法的定义 定义在类中,方法是独立的 2.语法: public static 返回值类型 方法名(形参列表){ 方法中的具体代码: } 1)方法名:在同一个类中方法名不能重复 命名规则:驼峰 ...