Python中的基本结构
Python中基本分为三种结构——顺序结构,分支(选择)结构,循环结构。
-
顺序结构
在Python中,我们编写代码是从上向下进行编写的,同样的,程序也是按照这样的顺序执行的。因此,任何算法中,任何程序中都应该是包含顺序结构的。在这里值得拓展的是,我们将编程语言分成解释执行和编译执行两大类。例如Python就是解释执行。在编写程序时,有时候会有一些bug,对于解释执行的编程语言来说,在bug之前的所有代码都会正常执行,直到遇到bug,程序就会停止。对于编译执行的编程语言来说,这个代码是无法进行执行的,它必须调整好所有的错误信息,然后才能进行执行。这是简单的理解方式。复杂的说,解释型编程语言直接解析代码,并进行执行。而编译型编程语言需要先对代码进行编译,将其转换成机器语言之后才能进行执行。
-
分支(选择)结构
在现实生活中,很多事情只能二选一或者多选一。对于任何一种选择,我们都没办法后悔经历另外一种。在编程中,我们可以使用分支语句来实现。-
if
语句if 条件: 要做的事 x = int(input()) if x>10: print("输入的数字大于10")
if
语句中,条件常常是关系运算符组成的关系式,或者逻辑运算符组成的逻辑表达式。当“条件”满足时,才会执行“要做的事”。例如下面的例子,input
表示输入,输入的内容转换为整数之后,存放在变量x
中,当x
的值大于10
时,输出“输入的数字大于10”这句话。需要注意的是,“条件”后面的冒号:
不要缺少!! -
if...else
语句if 条件: 要做的事1 else: 要做的事2 x=float(input()) if x>10: x-=11 x*=3.2 else: x+=3 x*=5 print(x)
if...else
语句提供了二选一的情况。如果满足“条件”,则执行“要做的事1”,否则,执行“要做的事2”。往往“要做的事1”和“要做的事2”不相同。
不论是if
语句还是if...else
语句还是后面介绍的其他语句,在Python中,缩进是非常重要的格式。同等级的缩进代表同级的执行内容。如在if...else
语句中,当输入的浮点数x
满足x>10
条件时,程序需要做两件事——1.将x
的值减少11
。2.将x
变成乘以3.2
之后的结果。同样的道理,当x>10
的条件不满足时,程序也需要执行两件事——1.将x
的值增加3
。2.将x
变成乘以5
之后的结果。
但需要同样需要注意的是,**print(x)
**的缩进与if
相同,这也就说明不论x
是否满足x>10
条件,print(x)
都会执行。
同样需要注意的是,“条件”和else
后面的冒号:
不能少。 -
if...elif...else
语句if 条件1: 要做的事1 elif 条件2: 要做的事2: else: 要做的事3 x=int(input()) if x>10: print("大于10") elif x>5: print("小于等于10,但大于5") else: print("小于等于5") x=int(input()) if x>10: print("大于10") elif x>5: print("小于等于10, 但大于5") x=int(input()) if x>10: print("大于10") elif x > 5: print("小于等于10,但大于5") elif x > 3: print("小于等于5,但大于3") else: print("小于等于3") x=int(input()) if x > 10: print("大于10") elif 5<x<10: print("x的值属于5~10之间") elif x==10: print("x的值等于10")
在代码中,我们可以了解到,
if...elif...else
能够提供多选一的选项。不同的形式体现在代码中了,需要额外提到的是,最后的else
不是必须的,中间的elif
数量没有限制,可以是0
个或者无数个。
同样非常重要的,不论是else
还是“条件”,后面的冒号:
均不能少。 -
分支语句的嵌套
分支语句之间可以存在嵌套关系。x=int(input()) if x > 10: if x > 5: x += 5 print(x) else: x -= 5 print(x) else: print("x小于等于10的情况")
该代码展示了分支语句嵌套的情况。当
x>10
成立时,程序需要再次进行“二选一”——x>5
或者x<=5
的情况。当x>5
成立时,程序会将x
的值增加5
,并进行输出。否则,将x
的值减少5
,并进行输出。若x>10
不成立,那么就只需要将“x
小于等于10的情况”这句话输出即可。
-
-
循环结构
-
for
语句
for
语句常用来遍历(从前往后依次访问每一个元素)列表,序列,字符串,字典等内容。通过遍历达到重复执行某段代码的目的。最常见的是range()
产生的序列。range(n)
产生一个序列,包含从0~n-1
的每一个整数。例如,range(6)
会产生0,1,2,3,4,5
序列。range(a,b)
产生一个序列,包含从a~b
的每一个整数。例如,range(1,6)
会产生1,2,3,4,5
序列。需要保证a<b
,否则不会产生序列。range(a,b,step)
产生一个序列,包含从a~b
中的一些数字,这些数字从a
开始,每次增加step
(step
可以是正数,负数)。例如range(1,6,2)
会产生1,3,5
序列。range(6,1,-2)
会产生6,4,2
序列。***需要保证,a
能够通过step
不断向b
靠近,否则将不会产生序列。***如range(1,6,-2)
不会产生序列。
总之,
range()
可以产生一个序列,该序列是左包含右不包含,并且range()
只能用于整数,并不能用于小数。
for
语句与range()
常常一起使用,用来遍历某一范围内的数。for i in range(6): print(i) # 程序会依次访问range产生序列中的元素,并且执行下面的print()代码,从而达到重复执行print的目的。 ''' 输出的结果 0 1 2 3 4 5 ''' x=["1", 2, 3] for i in x: print(i) # 程序会依次输出列表x中的元素 ''' "1" 2 3 ''' t="1223" for i in t: print(i) # 程序会遍历字符串t中的所有字符,并使用print进行输出 ''' 输出的结果 "1" "2" "2" "3" ''' p="1234" for i in range(len(p)): print(p[i]) # 程序通过len(p)计算字符串p的长度,并通过range产生0~len(p)-1的编号序列 # 并通过print将字符串P中对应编号的字符输出出来。 ''' 输出的结果 "1" "2" "3" "4" '''
-
while
语句
while
语句与if
语句有点相似,但不同的是含义,while
语句表示循环,当“条件”满足时,程序将会一直执行“要做的事”这段代码,直到“条件”不满足。while 条件: 要做的事 s=0 while s<6: s+=1 print(s) # 当s<6时,程序会一直执行s+=1,print(s) 这两句代码,直到s<6不满足。 ''' 输出的结果 1 2 3 4 5 ''' a=input() cnt=0 while a!="0": cnt=cnt+1 a=input() print(cnt) # 当输入的内容不是"0"时,程序会不断增加cnt的值,并且会继续提示输入。但当a的值等于"0"时,程序将会停止,并会输出cnt的值。 s=0 while True: s+=1 print(s)
最后一段
while
语句的代码比较特殊,它“条件”位置填写的是True
,说明该“条件”一直满足,那么程序将会一直将s
的值增加1
,并且不会停止下来。因此,while
语句外面的print(s)
永远都不会执行,因此该程序没有输出。 -
循环语句的嵌套
循环语句跟分支语句类似,都可以存在嵌套的情况。循环语句不仅可以嵌套分支语句,还可以嵌套循环语句。不过,循环语句嵌套循环语句的情况有些复杂,这里将不进行介绍。n=int(input()) cnt=0 while n > 1: cnt=cnt+1 if n%2==0: n//=2 else: n=n*3+1 print(cnt)
该程序进行了
while
语句与分支语句的嵌套。对于输入的整数n
来说,当它是偶数(n%2==0
)时,需要将其除以2
(n//=2
),当它是奇数时,需要将其乘以3
并且加1
(n=n*3+1
)。s=0 for i in range(1,101): if i%2==0: s-=i else: s+=i print(s) ''' 输出的结果 -50 '''
程序在遍历
range
产生的1~100
的每一个数字,并对i
的值进行判断,如果是偶数,则使用s
减去,否则加上。程序达到的目的是:偶数相加,奇数相减。该代码表达的意思也就是:+1-2+3-4...+99-100
。
-