分支的基本语法
if 条件表达式:
语句1
语句2
语句3
......
条件表达式就是计算结果必须为布尔值的表达式
表达式后面的冒号不能少
注意if后面的出现的语句,如果属于if语句块,则必须同一个缩进等级
if…else…语句
if 条件表达式:
语句1
语句2
...
else:
语句1
语句2
.....
双向分支有两个分支,当程序执行到if … else…语句的时候,一定会执行if或else中的一个,也仅执行一个
缩进问题,if和else一个层级,其余语句一个层级
gender = input("请输入性别:")
print("你输入的性别是:{0}".format(gender)) #{}表示这里是添加的字符串,0表示第一个字符串
score = input("请输入学生成绩:")
# 需要把str转换成int
score = int(score)
很多分支的情况,简称多路分支
if 条件表达式:
语句1
....
elif 条件表达式:
语句1
...
elif 条件表达式:
语句1
...
.....
else:
语句1
....
elif 可以由很多个
else可选
多路分支只会选一个执行
for循环
for 变量 in 序列:
语句1
语句2
...
# 打印学生列表姓名
for name in ['zhangsan', 'lisi', 'wangwu','jingjing']:
print(name)
zhangsan
lisi
wangwu
jingjing
range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]
while 条件表达式:
语句块
#另外一种表达方法
while 条件表达式:
语句块1
else:
语句块2
def func():
print("我是一个函数")
print("我要完成一定功能")
print("我结束了")
- 形参带有默认值
- 调用的时候,如果没有对相应形参赋值,则使用默认值
def func_name(p1=v1, p2=v2..........):
func_block
#调用1
func_name()
# 调用2
value1= 100
value2=200
func_name(value1,value2)
语法
def func(p1=v1, p2=v2.....):
func_body
调用函数:
func(p1=value1, p2=value2.......)
比较麻烦,但也有好处:
把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
语法
def func(*args):
func_body
按照list使用方式访问args得到传入的参数
调用:
func(p1, p2, p3, .....)
参数名args不是必须这么写,但是,我们推荐直接用args,约定俗成
参数名args前需要由星号
收集参数可以和其他参数共存
# 收集参数代码
# 函数模拟一个学生进行自我介绍,但具体内容不清楚
# args把他看做一个list
def stu( *args):
print("Hello 大家好,我自我介绍以下,简答说两句:")
# type函数作用是检测变量的类型
print(type(args))
for item in args:
print(item)
stu("liuying", 18, "北京大通州区", "wangxiaojing", "single")
Hello 大家好,我自我介绍以下,简答说两句:
liuying
18
北京大通州区
wangxiaojing
single
把关键字参数按字典格式存入收集参数
语法:
def func( **kwargs):
func_body
# 调用:
func(p1=v1, p2=v2, p3=v3........)
kwargs一般约定俗成
调用的时候,把多余的关键字参数放入kwargs
访问kwargs需要按字典格式访问
# 收集参数案例
# 自我介绍
# 调用的时候需要使用关键字参数调用
def stu( **kwargs):
# 在函数体内对于kwargs的使用不用带星号
print("Hello 大家好,我先自我介绍一下:")
print(type(kwargs))
# 对于字典的访问,python2 和python3有区别
for k,v in kwargs.items():
print(k, "---", v)
stu(name="liuying", age=19, addr="北京大通州区", lover="王晓静", work="Teacher")
print("*" * 50)
stu(name="周大神")
# 收集参数的解包问题
def stu(*args):
print("哈哈哈哈哈")
# n 用来表示循环次数
# 主要用来调试
n = 0
for i in args:
print(type(i))
print(n)
n += 1
print(i)
#stu("liuying", "liuxiaoyhing", 19, 200)
l = ["liuying", 19, 23, "wangxiaojing"]
#stu(l)
# 此时,args的表示形式是字典内一个list类型的元素,即 arg = (["liuying", 19, 23, "wangxiaojing"],)
# 很显然跟我们最初的想法违背
# 此时的调用,我们就需要解包符号,即调用的时候前面加一个星号
stu(*l)
def stu(name, age):
'''
这是文档的文字内容
:param name: 表示学生的姓名
:param age: 表示学生的年龄
:return: 此函数没有返回值
'''
pass
print(help(stu))
print("*" * 20)
print(stu.__doc__)
Help on function stu in module __main__:
stu(name, age)
这是文档的文字内容
:param name: 表示学生的姓名
:param age: 表示学生的年龄
:return: 此函数没有返回值
None
********************
这是文档的文字内容
:param name: 表示学生的姓名
:param age: 表示学生的年龄
:return: 此函数没有返回值