条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
if 语句,格式如下:
if condition_1: statement_block_1elif(else if) condition_2: statement_block_2else: statement_block_3注意:
单分支语句示例如下:
var1 = 100if var1: print ("1 - if 表达式条件为 true") print (var1)var2 = 0if var2: print ("2 - if 表达式条件为 true") print (var2)print ("Good bye!")# 结果1 - if 表达式条件为 true100Good bye!# 第二个if语句为什么没有执行,因为“var2 = 0”,条件为false,详见布尔数据类型。以下示例演示了狗的年龄计算判断:
age = int(input("请输入你家狗狗的年龄: "))print("")if age <= 0: print("你是在逗我吧!")elif age == 1: print("相当于 14 岁的人。")elif age == 2: print("相当于 22 岁的人。")elif age > 2: human = 22 + (age -2)*5 print("对应人类年龄: ", human)# 结果请输入你家狗狗的年龄: 1相当于 14 岁的人。以下为 if 中常用的操作运算符:
< | |
<= | |
> | |
>= | |
== | |
!= |
示例如下:
# 程序演示了 == 操作符# 使用数字print(5 == 6)# 使用变量x = 5y = 8print(x == y)# 输出FalseFalse数字的比较运算如下:
number = 7guess = -1print("数字猜谜游戏!")while guess != number: # 采用了while循环,后面讲 guess = int(input("请输入你猜的数字:")) if guess == number: print("恭喜,你猜对了!") elif guess < number: print("猜的数字小了...") elif guess > number: print("猜的数字大了...") # 结果 数字猜谜游戏!请输入你猜的数字:1猜的数字小了...请输入你猜的数字:9猜的数字大了...请输入你猜的数字:7恭喜,你猜对了!if 嵌套
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中,语句格式如下:
if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句elif 表达式4: 语句else: 语句示例如下:
num=int(input("输入一个数字:"))if num%2==0: if num%3==0: print ("你输入的数字可以整除 2 和 3") else: print ("你输入的数字可以整除 2,但不能整除 3")else: if num%3==0: print ("你输入的数字可以整除 3,但不能整除 2") else: print ("你输入的数字不能整除 2 和 3")# 结果输入一个数字:6你输入的数字可以整除 2 和 3Python 中的循环语句有 for 和 while。
while 语句的一般形式:
while 判断条件(condition): 执行语句(statements)……while循环是死循环,条件为真(True)永远执行,一般情况下会加条件进行控制。
同样需要注意冒号和缩进。另外,Python 中没有 do..while 循环。
以下示例使用了 while 来计算 1 到 100 的总和:
n = 100sum = 0 # 初始化“和”counter = 1 # 初始化起始值while counter <= n: # n可以直接换成100 sum = sum + counter counter += 1print("1 到 %d 之和为: %d" % (n,sum)) # %d占位符,详见格式化输出# 结果1 到 100 之和为: 5050无限循环(死循环):
var = 1while var == 1 : # 表达式永远为 true num = int(input("输入一个数字 :")) print ("你输入的数字是: ", num)print ("挂科!!") # 因为条件恒真,所以永远不挂科。# 结果输入一个数字 :5你输入的数字是: 5输入一个数字 :...***注意:***上面示例的print ("挂科!!")不执行的真正原因是python代码永远从上往下执行,只要有一部分代码死循环,就不会往下执行。示例中while条件恒真,所以永远不执行print ("挂科!!")语句。
while循环加else语句:
如果 while 后面的条件语句为 false 时,则执行 else 的语句块,语法格式如下:
while 条件: 语句1else: 语句2# 条件语句为 true 则执行语句1,如果为 false,则执行语句2。 循环输出数字,并判断大小:
count = 0while count < 5: print (count, " 小于 5") count = count + 1 # 等价count += 1else: print (count, " 大于或等于 5")# 结果0 小于 51 小于 52 小于 53 小于 54 小于 55 大于或等于 5简单while语句组:
类似 if 语句的语法,如果你的 while 循环体中只有一条语句,你可以将该语句与 while 写在同一行中, 如下所示:
flag = 1while (flag): print ('永远不挂科!') # 条件恒真,一条语句# 结果永远不挂科!永远不挂科!永远不挂科!永远不挂科!......for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
遍历:可以理解为 “每一遍都经历”。
for循环的一般格式如下:
for 表达式 in 序列: # for 表达式 in ..序列中: 语句 # 语句else: 语句示例如下:
sites = ["Baidu", "Google","python","Taobao"]for site in sites: print(site) # 默认换行,取消换行 end=""# 结果BaiduGooglepythonTaobao也可用于打印字符串中的每个字符:
str = "逢考必过不挂科"for i in str: print(i)# 结果逢考必过不挂科整数范围值可以配合 range() 函数使用:
# 1 到 5 的所有数字:for number in range(1, 6): print(number,end="") # 取消换行# 结果12345range()函数详讲:
range()函数基本语法:range(起始值,终止值,步长)
如果你需要遍历数字序列,可以使用内置 range() 函数。它会生成数列,例如:
for number in range(6): print(number) # 结果12345也可以使用 range() 指定区间的值:
for number in range(6,10): print(number)# 结果6789也可以使 range() 以指定数字开始并指定不同的增量:
for i in range(0, 10, 3) : print(i)# 结果 0369for i in range(-10, -100, -30) : print(i)# 结果 -10-40-70还可以结合 range() 和 len() 函数以遍历一个序列的索引,如下所示:
>>>a = ['Google', 'Baidu', 'python', 'Taobao', 'QQ']>>> for i in range(len(a)): print(i, a[i])0 Google1 Baidu2 python3 Taobao4 QQ还可以使用 range() 函数来创建一个列表:
>>> list(range(5))>>> [0, 1, 2, 3, 4]range()函数是不是很强大,相信聪明的你已经发现range函数是一个前闭后开区间(前包含,后不包含),但还有一些注意点。
注意:
for...else 语句:
for...else 语句用于在循环结束后执行一段代码,语法格式如下:
for item in iterable: # 循环主体else: # 循环结束后执行的代码当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码,如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句,示例如下:
for x in range(6): print(x)else: print("完成")# 结果012345完成以下 for 示例中使用了 break 语句,break 语句用于跳出当前循环体,不会执行 else 子句:
sites = ["Baidu", "Google","python","Taobao"]for site in sites: if site == "python": print("跳出循环,略过淘宝!") break print("循环数据 " + site) ##else: ## 全部跳出循环,不执行 print("没有循环数据!") ##print("完成循环!")# 结果循环数据 Baidu循环数据 Google跳出循环,略过淘宝!完成循环!break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环,示例如下:
n = 5while n > 0: n -= 1 if n == 2: continue print(n)print('循环结束。')# 结果4310循环结束。pass语句暂且不讲**,pass** 不做任何事情,一般用做占位语句,了解即可。
**end ** 关键字:
可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,示例如下:
# 斐波那契a, b = 0, 1while b < 1000: print(b, end=',') a, b = b, a+b# 结果1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,什么是函数?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
函数定义的规则:
定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表): 函数体示例如下:
def hello() : # hello()函数名,无参 print("Hello World!")hello() # 函数调用# 结果Hello World!定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
如下示例调用了 printme() 函数:
# 定义函数def printme( str ): # 打印任何传入的字符串 print (str) return# 调用函数printme("我要调用用户自定义函数!")printme("再次调用同一函数")# 结果我要调用用户自定义函数!再次调用同一函数以下是调用函数时可使用的正式参数类型:
必须参数:
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 printme() 函数,你必须传入一个参数,不然会出现语法错误:
#可写函数说明def printme( str ): "打印任何传入的字符串" print (str) return# 调用 printme 函数,不加参数会报错printme()# 结果Traceback (most recent call last): File "test.py", line 10, in <module> printme()TypeError: printme() missing 1 required positional argument: 'str'关键字参数:
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:
# 可写函数说明def printme(str1,str2): # "打印任何传入的字符串" print(str1) print(str2) return# 调用printme函数printme(str2="必过",str1="逢考") # 传参不需要指定顺序# 结果逢考必过默认参数:
调用函数时,如果没有传递参数,则会使用默认参数。以下示例中如果没有传入 age 参数,则使用默认值:
#可写函数说明def printinfo( name, age = 35 ): # age=35为默认参数 "打印任何传入的字符串" print ("名字: ", name) print ("年龄: ", age) return#调用printinfo函数printinfo( age=50, name="python" )print ("------------------------")printinfo( name="python" )# 结果名字: python年龄: 50------------------------名字: python年龄: 35不定长参数与匿名函数不再详讲。