发布于2020-02-10 17:38 阅读(1086) 评论(0) 点赞(9) 收藏(3)
——流程控制
Python同样提供了两种基本的流程控制结构——分支结构和循环结构;Python使用if语句来提供分支支持,提供了while、for-in循环,也提供了break 和 continue来控制程序的循环结构。
不要忘记缩进,不要随意缩进
首先,每种语言都有其特点,Python也有其特点:Python的代码块是通过缩进来标记的,不同于C和Java需要用花括号或end来作为代码块的标记,有相同缩进的多行代码属于同一个代码块,这对于我这种半强迫症简直太好了,用C和Java时候都要把代码搞得整整齐齐的人,还省了我天天忘记加end麻烦(虽然现在的开发环境都很人性化了)。因而,Python的代码不可以忘记缩进也不可以随意缩进。
不要忘记冒号
Python冒号精确表示代码块的开始点,这个规则所有的条件执行体、循环体、方法体、类体都要遵循。
if 分支采用布尔值或布尔表达式作为分支控制条件。Python的if分支即可作为语句使用,也可作为表达式使用。其语法格式与其他语言并无多少差别。
if expression:
statement...
elif expression:
statement1...
statement2...
else:
statement...
if分支的条件不仅包括Bool类型的表达式,可以是任意类型,下面的值作为Bool表达式时,会被当做False处理:
False,None,0," ",(),[],{}
各种代表“空”的 str类型、list类型、dict类型的条件都会被当做False来处理。
在使用if-else语句时,有一个基本规则:总是有先把范围小的条件放在前面处理。
age =45
if age>20:
print("Younger")
elif age>40:
print("Middle age")
elif age>60
print('older')
运行以上程序输出的反而是 Youger,理由很简单,第一个if为true就不用再elif了,所以范围小的应该放前面处理。正确应为:
age =45
if age>60:
print("Older")
elif age>40: #等同于if age>40 and not(age>60)
print("Midage")
elif age>20
print('Younger')
s=int(input("please input an int:"))
if s>5:
print("大于5")
elif s<5:
pass
else:
print("等于5")
s=int(input("please input an int:"))
assert 5<s<10
print("s在5和10之间")
``
```python
please input an int:1
Traceback (most recent call last):
File "C:/Users/WD/PycharmProjects/li4.6/li.py", line 2, in <module>
assert 5<s<10
AssertionError
While循环的语法格式如下:
count=0 #init_statements
while count<5: #test_expression
print("count:",count) #body_statements
count+=1 #iteration
print("Recycle finished")
count: 0
count: 1
count: 2
count: 3
count: 4
Recycle finished
那么想要取出列表或元组中的值时,除了pop()方法以弹栈的形式取出,就还可以用循环遍历取出其中的元素。
用while循环去遍历序列显然要麻烦得多,那么用专门的for-in循环来遍历这些可迭代对象就会更加简洁。
for-in循环的语法格如下:
for 变量 in 可迭代对象
statements
可迭代对象即指该对象中包含一个_iter_方法,且该方法的返回值对象有next()方法。
另外还有一点说明,for-in循环中的变量的值受for-in循环控制。他会在每次循环开始时自动被赋值,因此不应该在循环中对该变量赋值。
如用for_in循环来求阶乘:
integer=int(input("please input the target:"))
result=1
for i in range(1,integer+1):
result*=i
print(result)
please input the target:3
6
用for-in循环遍历列表、元组和字典:
a_list=[3.3,5.9,100,102.33,12,56,78,'python']
sum=0
count=0
for ele in a_list:
if isinstance(ele,int) or isinstance(ele,float):
sum+=ele
count+=1
print("求和:",sum)
print("平均:",sum/count)
my_dict={'BMW':100,'Bens':300,'Ford':20}
for key,value in my_dict.items():
print("key:",key)
print("value:",value)
for key in my_dict.keys():
print("key:",key)
for表达式最终返回的是列表,因此可利用列表、元组等可迭代对象来创建新的列表。表达式如下:
[表达式 for 循环计数器 in 可迭代对象]
for表达式与for循环看似无区别,实则不然:
a_range=range(10)
a_list=[x*x for x in a_range if x%2==0]
print(a_list)
output:
[0, 4, 16, 36, 64]
easy,不说了。
Python没有提供go to 来控制程序的跳转,据说时提高可可读性降低了灵活性。但Python也提供了break 和 continue来控制循环结构,用return来结束整个方法。
使用break结束循环
某些时候需要强行终止循环而不是等待出现False才终止,此时即可采用break来终止循环跳出循环体。
但值得注意的是,break只可以结束它所在的循环而不可以结束他外部嵌套的循环。
使用continue来忽略本次循环剩下的语句
看似它和break一样中止了循环,但continue并不会跳出循环,只是结束了本次循环,下次循环依旧进行。
使用return 结束方法
return用于从包围它的最直接方法、函数或匿名函数返回,当函数或方法执行到return语句时,这个函数或方法将被结束。
和break 和 continue 不同的是,不论return 处于多少层循环之内,都将直接结束整个函数或方法。
练习:打印一个近似圆,只要给定不同的半径,圆的大小就会随之改变。
r = int(input("请输入半径: "))
for i in range(2 * r + 1):
half = round((r ** 2 - (r - i) ** 2) ** 0.5)
print(" " * (r - half), end="")
print("*", end="")
print(" " * half * 2, end="")
print("*")
请输入半径: 3
**
* *
* *
* *
* *
* *
**
该程序也体现了顺序结构执行的方法,逐条语句执行
可见Python语言的简洁。虽然已经在课堂上学过一个学期C,可能现在让我来用C来输出这个东西,用循环跳指针还是会让我头大。。。
此处有几点注意:
Python每次输出都会 自动换行,因此如果不想让结果输出自动换行,就可以加上一个end= ,还可以设置间隔符。
作者:3434erer
链接:https://www.pythonheidong.com/blog/article/231027/74190625b38842bf07c3/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!