第3章 Python 的控制语句
3.1 结构化程序设计
顺序结构、判断结构、循环结构
3.2 if 语句
控制台输入函数:
input(prompt) ….value #参数prompt是控制台中输出的提示文字,提示用户输入,返回数字型的值。
raw_input(prompt) 返回字符串,如果输入数字还是返回字符串。
# 跳过if语句
a = input("a:")
b = input("b:")
if(a > b):
print a, " > ", b
print a, " < ", b
# if else语句
a = input("a:")
b = input("b:")
if(a > b): ##括号可以省略
print a, " > ", b
else: ##else也可以省略,但要缩进
print a, " < ", b
- 3.2.2 if…elif…else 语句
当程序分支很多时,可以使用此句。首先判断表达式1,如果为真,则执行语句1,否则执行elif子句,判断表达式2是否为真………..
# if elif else语句
score = input("score:")
if(score >= 90) and (score <= 100):
print "A"
elif(score >= 80) and (score < 90):
print "B"
elif(score >= 60) and (score < 80):
print "C"
else:
print "D"
- 3.2.3 if 语句的嵌套
x = -1
y = 99
if(x >= 0):
if(x > 0): #嵌套的if语句
y = 1
else:
y = 0
else:
y = -1
print "y =", y
要注意,编写嵌套语句时要把所有的分支情况都考虑到。因此,编写条件语句时,尽量避免使用嵌套语句,它不便于阅读,而且可能会忽略一些可能性。
- 3.3 循环语句
3.3.1 while 循环
当循环表达式为ture时,依次执行while中的子句,直到循环表达式为false,程序流转到else语句。其中else子句可以省略,表达式两侧括号也可以省略。注意,避免死循环,即循环条件永远为真。
# 带else子句的while循环
x = input("输入x的值:")
i = 0
while(x <> 0):
if(x > 0):
x -= 1
else:
x += 1
i = i + 1
print "第%d次循环:" %i, x #%d,整数,格式化字符,
else:
print "x等于0:", x
%i是用来返回%d的值,故不用“,”。
3.3.2 for 循环
range()函数:range([start,]stop[,step])→list of integers(整数列表)step
默认值为1,stop值不在列表。- for 循环用于偏历一个集合,依次访问集合中的每个项目。
- for…in… 循环执行过程:每次循环从集合中取出一个值,并把该值赋值给变量。集合可以是元组、列表、字典等数据结构。其中else子句可以省略,最后一次循环结束后将执行else子句。
# for in语句
for x in range(-1, 2):
if x > 0:
print "正数:",x
elif x == 0 :
print "零:",x
else:
print "负数:",x
else:
print "循环结束"
3.3.3 break和continue 语句
1.break 语句
在循环结构中,break语句可以提前结束循环。
# break语句
x = input("输入x的值:")
y = 0
for y in range(0, 100):
if x == y:
print "找到数字:", x
break #如果没有break就会执行else后语句
else:
print "没有找到"
- 2.continue语句
在循环结构中,当程序执行到continue语句时,程序将进入下一次循环,循环语句并没有中止。
x = input('输入x的值:')
y=0
for y in range(0,100):
if x != y:
print 'y=',y
continue #返回继续循环
else:
print 'x=',x
break #break必须在循环体或分支语句内
3.4 结构化程序示例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# xrange() #xrange()是一个类,并且返回的是一个xrange对象,每次遍历只返回一个值,而range()返回的是一个列表,一次性计算并返回所有的值。因此,xrange()的执行效率要高于range()。
x = xrange(0,8)
print x #输出:xrange<8>
print x[0] #输出:0
print x[7] #输出:8
# 冒泡排序
def bubbleSort(numbers): # 冒泡算法的实现
for j in xrange(len(numbers) - 1, -1, -1):
for i in xrange(j):
if numbers[i] > numbers[i+1]: # 把数值小的数字放到顶端
numbers[i], numbers[i+1] = numbers[i+1], numbers[i]
print numbers
def main(): # 主函数
numbers = [23, 12, 9, 15, 6]
bubbleSort(numbers)
if __name__ == '__main__':
main()
第4章 内置数据结构
Python提供的几种内置数据结构:元组、列表、字典和序列。
4.1 元组
4.1.1元组的创建
元组是“写保护”的,即元组创建后不能再做任何修改。
**格式:tuple_name = (元素1,元素2,...)**
注意:如果创建有唯一元素的元组,需要在该元素后面添加一个逗号。
4.1.2 元组的访问
元组中的元素通过索引访问。格式:tuple_name[n],其中n是从0开始计数的。
负数索引:从元组的尾部开始计数,最尾端的元素索引表示为“-1",次尾端的表示为”-2“,依次类推。
分片索引:分片是从第1个索引到第2个索引(不包含第2个索引的元素)所指定的所有元素。分片索引可以是正数或负数,两个索引之间用冒号分隔。格式:tuple_name [m:n]
#负数索引和分片索引
tuple = ("apple", "banana", "grape", "orange")
print tuple[-1] #输出:orange
print tuple[-2] #输出:grape
tuple2 = tuple[1:3]
tuple3 = tuple[0:-2]
tuple4 = tuple[2:-2]
print tuple2 #输出:('banana','grape')
print tuple3 #输出:('apple','banana')
print tuple4 #输出:()
#如何访问二元元组
fruit1 = ("apple", "banana")
fruit2 = ("grape", "orange")
tuple = (fruit1, fruit2)
print tuple 输出:(('apple','banana'),('grape','orange')
print "tuple[0][1] =",tuple[0][1] #输出第一组的第二个元素:banana
print "tuple[1][1] =",tuple[1][1] #输出第二组的第二个元素:orange
- 4.1.3 元组的遍历
遍历元组需要用到range( )【返回一个由数学组成的列表】和 len( )【计算元组中元素的个数】函数。
#使用range() 进行二元元组的遍历
tuple = (("apple", "banana"),("grape", "orange"),("watermelon",),("grapefruit",))
for i in range(len(tuple)):
print "tuple[%d] :" % i, "" ,
for j in range(len(tuple[i])):
print tuple[i][j], "" ,
print #打完一个元组后回车
输出的结果: tuple[0]: apple banana
tuple[1]: grape orange
tuple[2]: watermelon
tuple[3]: grapefruit