语句书写规范

缩进python语言书写中非常重要,如果缩进不规范,执行程序将会报错

引用维基百科中的叙述:

Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習慣。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如if語句.

根據PEP的規定,必須使用4個空格來表示每級縮排。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支持Tab字符和其它数目的空格僅僅是為兼容很舊的Python程式和某些有問題的編輯程式。

上面一段话中的几个关键点:

  • 必要要通过缩进方式来表示语句块的开始和结束
  • 缩进用四个空格(也是必须的,别的方式或许可以,但是不提倡)

if 条件判断

  1. python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……

注意:if 语句后面的:是必须的,否则程序会报错

  1. 当判断条件为多个值是,可以使用以下形式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
  1. 由于python并不支持switch语句,所以多个条件判断,只能用elif来实现,如果判断需要多个条件需同时判断时,可以使用orand来组合实现。
#!/usr/bin/python
# -*- coding: UTF-8 -*- # 例3:if语句多个条件 num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print 'hello'
# 输出结果: hello num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print 'hello'
else:
print 'undefine'
# 输出结果: undefine num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print 'hello'
else:
print 'undefine'
# 输出结果: undefine

if有多个条件时可以使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 andor的优先级低于><等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

三元操作符

三元操作符,是条件语句中比较简练的一种赋值方式,它的模样是这样的:

>>> name = 'alpha' if 'beta' else 'gamma'
>>> name
'alpha'
>>> name = 'alpha' if '' else 'gamma'
>>> name
'gamma'
>>> name = 'alpha' if 'beta' else 'gamma'
>>> name
'alpha'

总结一下:A = Y if X else Z

  • 如果 X 为真,那么就执行 A = Y
  • 如果 X 为假,那么就执行 A = Z

for 循环语句

for 语句基本结构:

for 循环规则:
操作语句

简单的 for 循环例子

>>> for i in range(4):
print i 0
1
2
3

for循环的工作方式为依次获取序列对象的索引(偏移量)的对应值,然后赋值给变量i。因此, python中能够进行for循环语句的数据为序列类型,序列类型包括strlisttuplesetdict

>>> name_str = 'ping'
>>> for i in name_str: #字符串可以循环
print i, p i n g
>>> name_list = list(name_str)
>>> for i in name_list: #列表可以循环
print i, p i n g
>>> name_set = set(name_str)
>>> name_set
set(['i', 'p', 'g', 'n'])
>>> for i in name_set: #集合可以循环
print i, i p g n
>>> name_tuple = tuple(name_str)
>>> name_tuple
('p', 'i', 'n', 'g')
>>> for i in name_tuple: #元组可以循环
print i, p i n g
>>> name_tuple
('p', 'i', 'n', 'g')
>>> mydict
{'alpha': 1, 'beta': 2}
>>> for i in mydict: #这儿本质上是将字典的键拿出来,成为序列后进行循环
print i, mydict[i] alpha 1
beta 2

for 循环使用 else 语句

python 中,for...else 表示这样的意思,for中的语句和普通的没有区别,else中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while...else也是一样

for 循环并行迭代

for 循环经常与内置函数zip()enumerate()搭配使用

zip()

>>> a = "qiwsir"
>>> b = "github"
>>> zip(a,b)
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]

如果序列长度不同,就以最短的序列为准

>>> c = [1,2,3]
>>> d = [9,8,7,6]
>>> zip(c,d) # list
[(1, 9), (2, 8), (3, 7)] >>> m = {"name","lang"}
>>> n = {"qiwsir","python"}
>>> zip(m,n) # set
[('lang', 'python'), ('name', 'qiwsir')] >>> s = {"name":"qiwsir"}
>>> t = {"lang":"python"}
>>> zip(s,t) # dict
[('name', 'lang')]

zip是一个内置函数,它的参数必须是某种序列数据类型,如果是字典,那么键视为序列。然后将序列对应的元素依次组成元组,做为一个list的元素。

下面是比较特殊的情况,当zip函数只有一个参数的时候,生成列表的结果如下:

>>> a
'qiwsir'
>>> c
[1, 2, 3]
>>> zip(c)
[(1,), (2,), (3,)]
>>> zip(a)
[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]

问题:有两个列表,分别是:a = [1,2,3,4,5], b = [9,8,7,6,5],要计算这两个列表中对应元素的和。

>>> d = []
>>> for x,y in zip(a,b):
... d.append(x+y)
...
>>> d
[10, 10, 10, 10, 10]

zip()还能这么干

>>> result
[(2, 11), (4, 13), (6, 15), (8, 17)]
>>> zip(*result)
[(2, 4, 6, 8), (11, 13, 15, 17)]

enumerate()

这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素索引,然后在用list[i]的方式得到该元素。如果要同时得到元素索引和元素怎么办。enumerate()就可以做到

>>> mydict
{'alpha': 'one', 'beta': 'two', 'gamma': 'three'}
>>> for (k,v) in enumerate(mydict):
... print k,v
...
0 alpha
1 beta
2 gamma

对字典进行迭代时,默认使用字典的键来进行迭代

列举几个例子

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

对于这样一个列表:

>>> mylist = ["qiwsir",703,"python"]
>>> enumerate(mylist)
<enumerate object at 0xb74a63c4>

出现这个结果,用list就能实现转换,显示内容。意味着可迭代。

>>> list(enumerate(mylist))
[(0, 'qiwsir'), (1, 703), (2, 'python')]

list 解析

先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来

>>> power2 = []
>>> for i in range(1,10):
... power2.append(i*i)
...
>>> power2
[1, 4, 9, 16, 25, 36, 49, 64, 81]

python有一个非常有意思的功能,就是list解析,就是这样的:

>>> squares = [x**2 for x in range(1,10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]

其实,不仅仅对数字组成的list,所有的都可以如此操作。请在平复了激动的心之后,默默地看下面的代码,感悟一下list解析的魅力。

>>> mybag = [' glass',' apple','green leaf ']   #有的前面有空格,有的后面有空格
>>> [one.strip() for one in mybag] #去掉元素前后的空格
['glass', 'apple', 'green leaf']

在很多情况下,list解析的执行效率高,代码简洁明了。是实际写程序中经常被用到的。

While 循环语句

python 编程中 while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

while 判断条件:
执行语句……

执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空的值均为true

#!/usr/bin/python

count = 0
while (count < 9):
print 'The count is:', count
count = count + 1 print "Good bye!"

while语句还有另外两个重要的命令continuebreak来跳过循环,continue用于跳过该次循环,break则是用于退出循环,此外“判断条件”还可以是个常值,表示循环必定成立,具体用法如下:

# continue 和 break 用法

i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print i # 输出双数2、4、6、8、10 i = 1
while 1: # 循环条件为1必定成立
print i # 输出1~10
i += 1
if i > 10: # 当i大于10时跳出循环
break

如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*- var = 1
while var == 1 : # 该条件永远为true,循环将无限执行下去
num = raw_input("Enter a number :")
print "You entered: ", num print "Good bye!"

while 循环中使用 else 语句

python 中,while...else在循环条件为false时执行else语句块:

#!/usr/bin/python

count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"

python初步学习-python控制流的更多相关文章

  1. python初步学习-python函数(一)

    python 函数 函数是组织好的,可重复使用的,用来实现单一或者相关联功能的代码段. 函数能提高应用的模块性和代码的重复利用率. 函数定义 python中函数定义有一些简单的规则: 函数代码块以de ...

  2. python初步学习-Python模块之 re

    re 正则表达式 python正则表达式在线检验网站 python re正则表达式语法 匹配字符 语法 解释 表达式 匹配实例 . 匹配任意除"\n"以外的任何字符 a.c abc ...

  3. python初步学习-python 模块之 json

    json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...

  4. python初步学习-python模块之 os

    os os 模块在运维工作中是很常用的一个模块.通过os模块调用系统命令.os模块可以跨平台使用. 在 import os的时候,建议使用import os而非from os import *.这样可 ...

  5. python初步学习-python模块之 logging

    logging 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在python中,我们不需要第三方的日志组件,python为我们提供了简单易用.且 ...

  6. python初步学习-python函数 (二)

    几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >& ...

  7. python初步学习-python文件操作

    文件 文件,在python中,他是一种类型的对象,类似前面已经学过的其他数据类型,包括文本的.图片的.音频的.视频的等等,还有不少没见过的扩展名的.事实上,在linux操作系统中,所有的东西都被保存到 ...

  8. python初步学习-python数据类型-集合(set)

    集合 在已经学过的数据类型中: 能够索引的,如list/str,其中的元素可以重复 可变的,如list/dict,即其中的元素/键值对可以原地修改 不可变的,如str/int,即不能进行原地修改 无索 ...

  9. python初步学习-python数据类型-列表(list)

    列表 list 在 python 中具有非常强大的功能 定义 在python中,用方括号表示一个list:[] 在方括号里面,可以是 int,也可以是 str类型的数据,甚至也可以是Flase/Tru ...

随机推荐

  1. Thinkphp5的ajax接口实现

    前一篇讲到thinkphp5从数据库获取数据之后赋给视图view,前一篇从数据渲染方式来说是服务端数据渲染,这一章则是浏览器端数据渲染.按照知识总结依据来划分,这是两种不同的技术场景. 下面介绍具体的 ...

  2. 某一线互联网公司前端面试题js部分总结

    js部分 1,使用严格模式的优点 - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度 ...

  3. 第二部分shell编程2正则(grepegrepsedawk)

    一.grep/egrep 1. 语法+选项语法: grep [-cinvABC] 'word' filename -c :打印符合要求的行数-n :在输出符合要求的行的同时连同行号一起输出 -v :打 ...

  4. try-with-resources语句

    try-with-resources语句是一种声明了一种或多种资源的try语句.资源是指在程序用完了之后必须要关闭的对象.try-with-resources语句保证了每个声明了的资源在语句结束的时候 ...

  5. HSF原理

    HSF(High-speed Service Framework),高速服务框架,是阿里系主要采用的服务框架,其目的是作为桥梁联通不同的业务系统,解耦系统之间的实现依赖.其高速体现在底层的非阻塞I/O ...

  6. POJ2828:Buy Tickets——题解

    http://poj.org/problem?id=2828 首先发现如果我们按照他的方法模拟的话,势必时间爆炸. 所以我们从后往前推,因为我们知道最后一个的位置一定是对的,而前面的位置可以从后面推知 ...

  7. HDOJ.2072 单词数(map)

    单词数 点我挑战题目 点我一起学习STL-MAP 题意分析 给出一行单词,判断这行有不同种的单词多少个,用map可以轻松解决. 代码总览 /* Title:HDOJ.2072 Author:pengw ...

  8. Visual Studio 2010如何利用宏

    最近在做后台代码的拆分,由于机器升级,原来装的添加注释的插件不能用了. 看来只有自己想办法了,看了下利用宏添加注释与把项目展开.折叠的方式: 参考了以下几个内容: 1.Visual Studio 20 ...

  9. bzoj3302&bzoj2447&bzoj2103(树的重心)

    三倍的幸福! 暴力的做法就是枚举每一条边断开,选的两个点就是左右两棵树的重心. 可以发现找重心的时候一定是往权和大的子树找的,需要维护一个点的最大和次大子树,因为最大子树可能被割掉了,实际效率为O(N ...

  10. POJ 2763 Housewife Wind 纯粹LCA写法(简单无脑)

    Description After their royal wedding, Jiajia and Wind hid away in XX Village, to enjoy their ordina ...