Python流程控制

  Python中的流程控制主要包含两部分:条件判断和循环。

Python的缩进和语法

  为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java、c等其他语言中,代码块使用{}进行包裹,而Python中不同。

  Python使用缩进(空格)和冒号来表示包含的意思,但Python并没有规定使用几个缩进,目前通用的标准是使用4个空格。

>>> if ( 1 > 2) :     # 冒号
... print(False) # if 包含的代码段,需要缩进4个空格
... else:
... print(True) # else包含的代码段,需要缩紧4个空格
...
True
>>> # 需要注意的是:如果包含的代码继续包含,那么依旧需要缩进4个空格,如果不是被包含的代码,那么就不能缩进

条件判断

  计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。在Python中主要通过if以及else的搭配来完成条件判断的工作。

  条件判断主要有三种基本用法。

单分支

  顾名思义即如果怎么样,就怎么样。(if)

if expression:
statement(s) 注意:python使用缩进作为其语句分组的方法,建议使用4个空格
# expression 表示条件表达式(比如:a>b)
# statement 表示要执行的代码

多分支

  多分支有分为两种情况:

  1、如果怎么样,就怎么样,否则,怎么样。(if、else)

  2、如果1怎么样,就怎么样,如果2怎么样,就怎么样...,否则,怎么样(if、elif、else)

if expression:
statement(s)
else:
statement(s) 注意:else和if属于同级 if expression:
statement(s)
elif expression:
statement(s)
else:
statement(s)

小结

  条件的写法非常多,可以写一个表达式或者多个表达式都可以,表达式的值为0,就表示false。
  if就是判断,主要就是对表达式的逻辑值进行判断
  逻辑值(bool)包含了两个值:
    • True:表示非空的量(比如:string、tuple、list、set、dictionary),所有非零数。  
    • False:表示0,None,空的量等。  

小练习

#!/usr/bin/env python

num = raw_input("Please input Yes/No")
num = num.lower()
if num == "yes" or num == "y":
  print "Your Program is running..."
elif num == "no" or num == "n":
  print "Your Program is stopped"
else:
  print "Your input Error. please reinput !"

  扩展:循环是一个结构,导致程序要重复一定的次数,条件循环也是如此,当条件变为假,循环结束。

Python循环

  为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。Python中的循环主要有两种:for循环和while循环。

for 循环

  在序列里,使用for循环遍历,字符串,元组,列表,字典,都属于序列。

格式

for iterating_var in sequence:
statemen(s) # iterating_var 表示循环时表示元素的变量(自行指定)
# sequence:这里表示序列,也可以为一个可迭代对象(以后会讲什么是可迭代对象)
# statemen(s) 表示代码段

for循环遍历字典

    默认情况下,循环便利字典,字典只能返回key列表,这时我们可以利用字典的 方法,把字典转换为列表或者对象,来编列字典中的key和value
for k,v in b.items():
  print k,v
    把字典转换为列表(key和value会以元组的形式存储),然后定义两个变量,接收列表中元组的两个值,也可以利用字典的iteritems()方法,把字典转换成列表对象,这样更节省内存空间(类似xrange和range的区别)
for k,v in b.iteritems():
  print k,v

扩展

  1.for的高级特性
print [ i for i in range(10) ]
这叫列表重写,把for i in range(10),依次赋值给i,这样实际上等同于
for i in range(10):
  print i
后面也可以加条件:
print [ i for i in range(10) if i % 2 == 0 ]
来取偶数

  2.区间对象

range(start,stop,step)
整数型,用来取start----stop的区间,其中start和step默认省略,并且stop不包含在区间内,可以取一个范围,step是步长 xrange(int)
用法和range相同,只不过range会直接展开列表(展开列表即要占内存空间,在区间很大的时候,不建议使用),而xrange不会展开,仅仅当我们轮训的时候,才会展开显示。

PS:Python3 中舍弃了range,并且把python2 中的xrange改成了range。

练习

  打印9*9乘法表:
for i in range(1, 10):
for j in range(1, i+1):
print('{} * {} = {}\t'.format(i, j, j*j),end="")
print()
  打印10以内的奇偶数:
for i in range(1, 10):
if i % 2 != 0:
print(i)
注意:由于print默认会打印一个换行符,这里我们在print语句后面添加,(逗号)来取消换行符的输出。 

for循环的else语句

for iterating_var in sequence:
  statemen(s)
else:
  statemen(s)
注意:else语句为for循环正常结束后要执行的语句,如果for循环被终止(比如满足某条件跳出循环等),那么就不会执行else后面的语句

While循环

  for 循环主要去对列表、字符串、文件的行数等有次数的循环上。  
  while 循环在有条件的控制上。
  while循环,直到表达式变为假(或者有一个break),才退会出while循环,表达式是一个逻辑表达式,必须返回一个True或False

语法格式

while expression:
statement(s) #注意:避免写成死循环

练习

    直到输入是q,退出循环
x = ''
while x != 'q':
user_input = input('Input: ')
if user_input == 'q' or user_input == 'quit':
x = 'q'
print('End')
else:
print("Next")
continue
    判断输入的时候是空字符,是的话,就退出循环
x = ''
while x != 'q':
user_input = input('Input: ')
if user_input == 'q' or user_input == 'quit':
x = 'q'
print('End')
elif not user_input:
break
else:
print("Next")
continue

在Python中空表示false,所以not x,就表示True,所以if not x表达式成立就直接break了。

Python循环控制

  Python中的循环控制主要有三种方式,即:continue、break、pass。

    • continue:继续,当满足条件后,跳过本次循环。  
    • break:退出,当满足某一个条件后,终止循环。  
    • pass:占位符,仅仅起到占位的左右,没有其他效果。  
  扩展:sys.exit():sys模块的exit方法,表示退出整个程序

练习

    猜数字游戏,给6次机会,数字是20以内的随机数。
import random
while True:
guest_number = random.randint(1,20)
n = 0
while n <= 5:
user_input = input('Guest a number:').strip()
if user_input.isdigit():
user_input = int(user_input)
if user_input == guest_number:
print('Yeah,You Win!!!')
break
elif user_input > guest_number:
print('Smaller')
else:
print('Bigger')
if n != 5:
print('You hava {} chances'.format(5 - n))
n += 1
else:
print('Must be a Number')
continue
user_input = input('Continue? Y or other:').strip()
if user_input == 'y' or user_input == 'yes':
continue
else:
break

Python学习笔记 - day4 - 流程控制的更多相关文章

  1. PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数

    前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...

  2. Python学习笔记:流程控制

    单分支: if 条件: 满足条件后执行的代码 程序举例: leiyu=28if leiyu > 22: print("You can find girl friend..." ...

  3. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

  4. C#学习笔记_04_流程控制

    04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...

  5. JavaSE学习笔记03流程控制

    Java流程控制 1.顺序结构 java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构. 2. 选择结构 ...

  6. Java学习笔记五——流程控制

    分支结构 Java提供了两种常见的分支控制结构:if语句和switch语句. if语句 if语句使用布尔值或布尔表达式(表达式结果为布尔值),if语句有3中形式: 第一种形式: if (5 > ...

  7. Python学习笔记——Day4

    字符串操作 string典型的内置方法: count() center() startswith() find() format() lower() upper() strip() replace() ...

  8. python学习笔记-Day4(2)

    正则表达式 语法: import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意 ...

  9. python学习笔记-day4笔记 常用内置函数与装饰器

    1.常用的python函数 abs             求绝对值 all               判断迭代器中所有的数据是否为真或者可迭代数据为空,返回真,否则返回假 any          ...

随机推荐

  1. js复制粘贴事件

    一.相应的事件 copy: 在发生复制操作时触发. beforecut: 在发生剪切操作 前 触发. cut: 在 发生 剪切 操作 时 触发. beforepaste: 在 发生 粘贴 操作 前 触 ...

  2. asp.net webapi 使用小结

    一星期前公司用webapi处理一些事情,自己总结一下用法. 1.创建一个空的webapi会默认有一下几个方法. public class ValueController : ApiController ...

  3. PHP二维数组按某个键值排序

    $data=Array(    [0] => Array        (            [id] => 2            [user_id] => 14       ...

  4. C++学习014函数值传递和地址传递

    当我们给一个函数传参数的时候,可以直接值传入函数,也给可以把一个地址传入函数 区别就是一个本身不被改变,而另一本身也在改变, 在开发时候都会用到, 这里做下记录 #include <iostre ...

  5. URAL 1732 Ministry of Truth(KMP)

    Description In whiteblack on blackwhite is written the utterance that has been censored by the Minis ...

  6. 前端开发神器Sublime Text2/3之安装使用(windows7/Mac)

    一,到官方网站下载神器 地址:http://www.sublimetext.com/3 Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packag ...

  7. ubuntu apache2配置,包括虚拟机配置

    虚拟机设置好了之后,需要在/etc/hosts里面添加  127.0.0.1  www.baidu.com   跟在windows里hosts里配置是一样的

  8. Beat 冲刺 (3/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  9. 面试题中经常遇到的SQL题:删除重复数据,保留其中一条

    如题,解决思路如下: 1.首先我们需要找出拥有重复数据的记录 ---以name字段分组 select Name,COUNT(Name) as [count] from Permission group ...

  10. android自定义View绘制圆形头像与椭圆头像

    要实现这两种效果,需要自定义View,并且有两种实现方式.   第一种: public class BitmapShaders extends View {     private  BitmapSh ...