很快地今天进入基础观念最後一个小章节(感动流泪啊XD),将带大家说明流程控制、回圈和函数的基本概念!
流程控制可以让我们利用程序码做不同的事情哦!
基本结构如下,记得下一行程序码要进行缩排 4 个字元
这边的「条件」会让程序进行判断并回传 True 或 False
如果是 True 就会进入该程序码区块罗
if 条件1:
程序码区块1
elif 条件2:
程序码区块2
else:
程序码区块3
都要成立才会回传 True
x = 5
y = 6
if x > 3 and y < 5 :
print('Good!')
else:
print("Bad")
其中一个成立就回传 True
x = 5
y = 6
if x > 3 or y > 5 :
print('Good!')
else:
print("Bad")
唱反调,True 回传 False、False 回传 True
x = 5
if not x > 3:
print('Good!')
else:
print("Bad")
x = 5
if x == 3 :
print('Good!')
else:
print("Bad")
x = 5
if x != 3 :
print('Good!')
else:
print("Bad")
而 elif 可以很多,但很多初学者会觉得一定要写 elif 和 else,不!没有这回事
其实 if 自己就可以当一个程序码区块
情况一
这个很顺利只会印 Good!
x = 5
if x > 3 :
print('Good!')
else:
print('Bad')
情况二
这个会印 Good! 也会印 I'm integer!
x = 5
if x > 3 :
print('Good!')
if isinstance(x, int):
print("I'm integer!")
若有多层的巢状结构,就像有人在打波动拳一样,这样的程序码结构不易阅懂且不易维护,请避免写出这样的结构。开发者应朝向尽量越少层越好的想法去撰写程序码
x = 6
if x > 1 :
if x > 2 :
if x > 3 :
if x > 4 :
if x > 5:
print("HERE")
else:
pass
else:
pass
else:
pass
else:
pass
else:
pass
程序最擅长做重复的工作,那倒底怎麽做的呢?通常我们会用回圈来完成!
这里会用到 for 这个关键字
for 变数 in 可迭代物件:
你的程序码
x = [1, 2, 3, 4, 5]
for i in x:
print(i)
>>> 1
2
3
4
5
由於迭代一个回圈往往需要生成一个可迭代物件,我们会利用 range 创造可迭代物件
x = range(10)
list(x)
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# range(起始值, 终止值, 步伐)
x = range(5, 10, 2)
list(x)
>>> [5, 7, 9]
有些人可能会这样写去创造一个串列,大家要看得懂哦~
x = [ i**2 for i in range(3)]
print(x)
>>> [0, 1, 4]
通常会搭配 if 来操作,在特定情况下我想要让回圈不要再执行了~
(回圈觉得抽象可以自己多 print 看看 )
for i in range(10):
print("i:", i)
if i == 9:
break
通常会搭配 if 来操作,在特定情况下我想要跳过这一round的步骤~
我想要在50岁以上计数人数
member_age_list = [10, 48, 13, 76, 13, 64, 57, 26, 37]
count = 0
for age in member_age_list:
if age < 50:
continue
count += 1
print(count)
比较上面的写法,我觉得有更好的写法是下面这个,但我只是要 demo XDDD
member_age_list = [10, 48, 13, 76, 13, 64, 57, 26, 37]
count = 0
for age in member_age_list:
if age >= 50:
count += 1
print(count)
while 也是回圈的一种,重点在条件是否成立,倘若成立就会一直执行程序码区块。若没有注意,可能会导致有无穷回圈让的状况。
while 条件:
程序码区块
无穷回圈的案例,只要条件一直成立(True永远成立),那麽就会一直 print。
若要中断程序可以按 ctrl + C
while True:
print("Hello World!")
我们可以透过这个特性来设计一个对话框
while True:
name = input("Please enter your name...")
print(f"Hello {name}")
control = input("Do you want to leave?(Y/n)")
if control == 'Y':
break
小小练习建议:大家看完这个案例可以实作一个终极密码程序XD
这边私心介绍一个超好用的 enumerate 枚举物件,可以很方便地帮你迭代,会回传计数器和元素值:
food = ["apple", "lemon", "orange"]
for i, element in enumerate(food):
print(i, element)
> 0 apple
1 lemon
2 orange
看到这边的大家已经学会 python 的基本观念,但是我们常常会需要重复使用这些程序码,是否能把这些整理在一个地方,等我要用的时候呼叫呢?有的!就是函数的概念。有什麽优点呢:
def 函数名称(参数1, 参数2, ...):
"""
函数的注解
"""
程序码区块
return 回传值1, 回传值2, ...
def get_discount(price, discount):
new_price = price * (1 - discount)
return new_price
参数的位置会代表相对的输入,这时候 x=1, y=2 ,这时候参数的位置是会影响输入的值
def add(x, y):
print("x:", x)
print("y:", y)
result = x + y
return result
add(1 , 2)
关键字输入,我们如果指定的话,就可以利用关键字来指定,这时候参数的顺序就不会影响输入的值
def add(x, y):
print("x:", x)
print("y:", y)
result = x + y
return result
add(y=1 , x=2)
设定预设参数值,这时候使用函数的人就不一定要输入该参数。请留意有预设参数值的参数,顺序要放在最後。
def add(x, y=10):
print("x:", x)
print("y:", y)
result = x + y
return result
add(x=1)
回收一下伏笔,之前有提到说 python 不用特别去宣告变数类型,但我们可以在 function 加上去,让别人清楚你在写什麽。参数後面加上冒号,就可以写参数类型;同样在回传值部分,用箭头符号 -> 加上参数类型。
def add(x: int, y:int) -> int:
print("x:", x)
print("y:", y)
result = x + y
return result
add(1 , 2)
DBABootcamp 最简单的方法就是右键点击资料库,然後选择"属性"。在左边...
前言 又来Injection了! 正文 XSLT,全称Extensible Stylesheet L...
章序 嘿!各位线上的朋友们,大家是否有定期阅读的习惯呢,这次刚好藉着跟随iThome铁人赛30天文章...
ㄧ、资料前处理 1. 补值、删值 前面我们透过视觉化的方式找到资料有缺值,因此我们要将资料进行补值。...
以前遇到一个情况阿,使用者输入,我要ㄧ个汉堡,二杯奶茶,到後台却变成,我要\xe3\x84\xa7个...