1、元祖
元组:Python的元祖与列表类似,不同之处在于元祖不能修改,元祖使用小括号,列表使用方括号。
#列表
>>> num = ['laoli','laowang','laozhang']
>>>
>>> num.append('laoji')
>>>
>>> num
['laoli', 'laowang', 'laozhang', 'laoji']
>>> num[1] = 'laotian'
>>>
>>> num
['laoli', 'laotian', 'laozhang', 'laoji']
>>>
#元组
>>> num1 = ('laoli','laowang','laozhang')
>>>
>>> num1[1] = 'laoji'
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
num1[1] = 'laoji'
TypeError: 'tuple' object does not support item assignment
>>> num1.append('laotian')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
num1.append('laotian')
AttributeError: 'tuple' object has no attribute 'append'
>>>
2、定义函数
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
命令: def 函数名():
def print_fozu():
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖镇楼 BUG辟易 ")
print(" 佛曰: ")
print(" 写字楼里写字间,写字间里程序员; ")
print(" 程序人员写程序,又拿程序换酒钱。 ")
print(" 酒醒只在网上坐,酒醉还来网下眠; ")
print(" 酒醉酒醒日复日,网上网下年复年。 ")
print(" 但愿老死电脑间,不愿鞠躬老板前; ")
print(" 奔驰宝马贵者趣,公交自行程序员。 ")
print(" 别人笑我忒疯癫,我笑自己命太贱; ")
print(" 不见满街漂亮妹,哪个归得程序员?")
3、定义、调用函数
def print_menu(): #定义一个函数
print("今天天气好吗?")
print("不怎么好")
print("是天气不好还是你的心情不好")
print("我的心情就是我的天气")
print("好吧~")
print_menu() #用这个来调用函数
#执行顺序: def print_menu(): -> print的内容不执行,继续往下, - > print_menu() - > 打印print内容 -> 打印完成之后返回 print_menu()继续往下执行
4、4种函数
def 函数名():
pass #没有参数没有返回值
def 函数名():
return xxx #没有参数有返回值
def 函数名(参数):
pass #有参数没有返回值
def 函数名(参数):
return xxx #有参数有返回值
5、带有参数的函数
#定义函数
def num_num1(a,b): #a,b存储 num1 , num2的值,变量名a,b可以随便设置。意味着你这两个变量的目的,就是当(num1,num2)去调用函数的时候(a,b)来接收
result = a + b
print('%d+%d=%d'%(a,b,result))
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入第二个数字:"))
#调用函数
num_num1(num1,num2) #当我去调用函数的时候,顺便把这个两个值给他
6、return的作用
#定义一个函数,打印出现在的温度
def get_wendu():
wendu = 22
print("现在的温度是:%d"%(wendu))
get_wendu()
#如果我们同时也想打印出华氏温度,该如何打印,假设,假设华氏温度比温度高2度,那我们该如何写
def get_wendu():
wendu = 22
print("现在的温度是:%d"%(wendu))
def get_huashi_wendu():
wendu = wendu + 2
print("华氏温度是:%d"%(wendu))
get_wendu()
get_huashi_wendu()
#加入我们按照以上的代码写,会不会出错?结果是肯定的,我们定义get_huashi_wendu的函数内wendu的变量是查找不到的,我们用什么方法来让函数内的温度能获取到上一个函数内的wendu变量呢?
def get_wendu():
wendu = 22
print("现在的温度是:%d"%(wendu))
return wendu #把结果返回到调用,也就是返回到result = get_wendu()
def get_huashi_wendu(wendu): #(wendu)接收result的值
wendu = wendu + 2
print("华氏温度是:%d"%(wendu))
result = get_wendu()
get_huashi_wendu(result) #把当前变量的值当作一个参数传进get_huashi_wendu里面
来做个小游戏
1:根据用户的输入,打印电影、电视剧、综艺排行榜(内容自己定义)
2:使用return来进行结果调用
#排行榜内容都是自己定义,不代表实际数据
def print_in():
print("="*10)
print("1:查看电影列表")
print("2:查看电视剧列表")
print("3:查看综艺排行榜")
print("="*10)
name_input = int(input("请输入序号查看信息:"))
return name_input
def print_dianying(name_input):
if name_input == 1:
print("-----电影排行榜-----")
print("Top1:羞羞的铁拳")
print("Top2:芳华")
print("Top3:奇门遁甲")
elif name_input == 2:
print('-----电视剧排行榜-----')
print("Top1:猎场")
print("Top2:我们的少年时代")
elif name_input == 3:
print('-----综艺排行榜-----')
print("Top1:爸爸去哪儿5")
print("Top2:亲爱的客栈")
name_input = print_in()
print_dianying(name_input)
7、函数中的多个return
之前我们演示了return调用函数内的值,那在这个函数里面只有一个return,但是如果我们有多个return该如何处理?
def test():
a = 11
b = 22
c = 33
return a
return b
return c
num = test()
print(num)
#这样写会打印出什么?只会打印出11,那我们再多写几个print
def test():
a = 11
b = 22
c = 33
return a
return b
return c
num = test()
print(num)
num = test()
print(num)
#看看这样能不能把22,打印出来?结果是否定的,打印两边11
我们用之前学过的列表、元祖、字典等的方式来看看行不行
#这样是不是就是打印出来了。还有没有其他办法
def test():
a = 11
b = 22
c = 33
d = [a,b,c]
return d
#return b
#return c
num = test()
print(num)
#我们用元组试试,这样是不是也可以
def test():
a = 11
b = 22
c = 33
d = (a,b,c)
return d
#return b
#return c
num = test()
print(num)
#还有没有其他办法?,这样是不是也可以
def test():
a = 11
b = 22
c = 33
return a,b,c
#return b
#return c
num = test()
print(num)
8、函数的嵌套调用
什么是函数嵌套调用:在一个函数被调用的过程里面又调用一个函数
#w我们可以定义很多函数,但是你调用谁是你的问题,其他没有调用的函数,程序也不会报错
def test1():
pass
def test2():
pass
def test3():
print("-----3-1---")
print("-----3-2---")
test3()
我们接下来看函数嵌套调用
def test1():
pass
def test2():
print("-----2-1---")
print("haha")
print("-----2-2---")
def test3():
print("-----3-1---")
test2()
print("-----3-2---")
test3()
#我们把test2嵌套在test3里面,然后test3调用test3函数的时候,顺便把test2函数给调用了出来,这就是嵌套调用
9、函数的嵌套调用应用
我们用函数来打印一条线
def print_xian():
print('-'*10)
print_xian()
如果现在有这样一个需求,再定义一个函数,打印五条这样的线出来,我们该如何操作
def print_xian():
print('-'*10)
def print_5_xian():
print('-'*10)
print('-'*10)
print('-'*10)
print('-'*10)
print('-'*10)
#print_xian()
print_5_xian()
我们有没有更好的办法来得到同样的结果?如果换做是代码的话,那可能就很麻烦了,所以有没有什么好的办法进行呢?
def print_xian():
print('-'*10)
def print_5_xian():
i = 0
while i < 5:
print_xian()
i += 1
print_5_xian()
#这样是不是也能得到同样的结果呢,是不是比上一个方法要方便很多