第一周 Basics of Python 第二节 Python面面观

1.2 More About Python

一 条件condition

1 if语句——条件表达式expression条件为true时执行代码块 expr_trhe_sute;代码块必须缩进(通常为4个空格)

语法:if expression:

             expr_true_suite

2 else语句——expression条件为false时候执行代码块 expr_false_suite;代码块必须缩进;else语句不缩进

语法:if expression:

             expr_true_suite

        else:

             expr_false_suite

3 elif语句——多分支结构

语法:if expression:

             expr_true_suite

        elif expression2:

             expr_true2_suite

        else:

             none_of_the_obove_suite

4 条件嵌套——同等缩进为同一条件嵌套

例子及结果:

 1 k=raw_input('input the index of shape:')
 2 if k=='1':
 3     print 'circle'
 4 elif k=='2':
 5     print 'oval'
 6 elif k=='3':
 7     sd1=int(raw_input('the first side:'))
 8     sd2=int(raw_input('the second side:'))
 9     if sd1==sd2:
10         print "the square's area is:%d"%(sd1*sd2)
11     else:
12         print "the rectangle's area is:%d"%(sd1*sd2)
13         print 'rectangle'
14 elif k=='4':
15     print 'triangle'
16 else:
17     print 'you input the invalid number'
1 runfile('C:/Users/john/Desktop/hello world.py', wdir='C:/Users/john/Desktop')
2 
3 input the index of shape:3
4 
5 the first side:2
6 
7 the second side:5
8 the rectangle's area is:10
9 rectangle

二 range和xrange

1 range()——生成一个真实的列表

语法:range(start,end,step=1)

         range(start,end)  默认step值为1

         range(end) 默认start值为0

start起始值(包含)end终值(不包含)step步长(不能为0)

>>>range(3,11,2)

[3,5,7,9]

>>>range(3,11)

[3,4,5,6,7,8,9,10]

>>>range(11)

[0,1,2,3,4,5,6,7,8,9,10]

2 xrange()——语法同range;不同在于:range返回列表,xrange返回生成器、range生成真实列表,xrange则用多少生成多少,更节省内存

在Python3中range已经成为xrange,若想要生成列表可用list(range)

三 循环

1 while——赋初值;注意表达式;不要害怕死循环

2 for——适合循环次数确定的情况下:遍历一个数据集内的成员、在列表解析中使用、生成器表达式中使用

语法:for iter_var in iterable_object:

            suite_to_repeat

可迭代对象 iterable_object: String、List、Tuple、Dictionary、File

列表解析语法规则用[]; 生成器表达式和xrange比较像,用于数据量较大时候

  

四 循环中的break,continue和else

1 break——跳出循环

eg1:

eg2:输出2-100之间的素数  (2~根号x之间没有x的约数)分别以while和for【不懂】

2 continue语句——在while和for循环中,continue语句的作用是:停止当前循环,重新进入循环;while循环则判断循环条件是否满足;for循环则判断迭代是否已经结束

 

左边:i=3时候结束循环直接跳出,所有没有print i=3

右边:i=4时候继续循环,所以直接跳过了print 进入i=4

3 循环中的else——如果循环代码从break处终止,跳出循环;正常结束循环,则执行else中的代码

课程案例:猜数字游戏——程序随机产生一个0~300之间的整数;玩家竞猜,系统给出“猜中”、“太大了”、“太小了”的提示;允许玩家自己控制游戏次数,不想玩了可以退出。

 1 from random import randint
 2 x=randint(0,300)
 3 print x
 4 print 'please input a number between 0~300:'
 5 for count in range(0,5):
 6     digit=input()
 7     if digit==x:
 8         print 'Bingo!'
 9     elif digit>x:
10         print 'Too large,please try again.'
11     else:
12         print 'Too small,please try again.'

 五、Self-defined Functions自定义函数【**】

1 自定义函数的创建

语法:def function_name([arguments]):

         "optional documentation string"

         function_suite

函数调用方式:函数名(参数),没有参数小括号也不行省

eg:输出1-100之间的素数【不懂】

from math import sqrt
def isprime(x):
    if x==1:
        return False
    k=int(sqrt(x))
    for j in range(2,k+1):
        if x%j==0:
            return False
        return True
for i in range(2,101):
    if isprime(i):
        print i,

out:

runfile('C:/Users/john/Desktop/hello world.py', wdir='C:/Users/john/Desktop')
5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

2 默认参数——函数的参数可以有一个默认值,如果提供默认值,在函数定义中,默认参数以赋值语句的形式提供;默认参数可以改变

3 传递函数

4 匿名函数

 【被跳过了】

 六、递归recursion:递归是最能表现计算思维的算法之一;循环---(生成裴波那契数列的方法)---递归;递归必须要有边界条件,即停止递归的条件n==0 or n==1;递归的代码更简洁,更符合自然逻辑,更容易了解。

递归的执行:逐层递归调用;遇到边界条件停止递归;逐层返回调用至最初层;系统资源消耗比循环大。

eg.0,1,1,2,3,5,8,···

举例: 简化版汉诺塔游戏

三个塔座ABC上各有一根针,通过B把64个盘子从A针移动到C针上,移动时必须遵守下列规则:(1)圆盘可以插在ABC塔座的针上(2)每次智能移动一个圆盘(3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上

#filename:hanoi.py
def hanoi(a,b,c,n):
    if n==1:
        print a,'->',c
    else:
        hanoi(a,c,b,n-1)
        print a,'->',c
        hanoi(b,a,c,n-1)
                        
hanoi('a','b','c',4)
##课后作业:n个盘子需呀多少步骤31  15 7 3

runfile('C:/Users/john/Desktop/hello world.py', wdir='C:/Users/john/Desktop')
a -> b
a -> c
b -> c
a -> b
c -> a
c -> b
a -> b
a -> c
b -> c
b -> a
c -> a
b -> c
a -> b
a -> c
b -> c

【答案是对的然而。。看不懂】

 七、变量作用域scope of variable: 全局变量,局部变量。内层屏蔽外层;可以用global语句进行全局变量定义;编程要求内部内聚性强,与其他模块耦合性较差,全局变量不符合这一要求,但若能给程序带来较大便利则可用。

原文地址:https://www.cnblogs.com/mobuzao/p/6195512.html