测试题:
0.下面程序会输入什么?
1 def next(): 2 print("我在next()函数里···") 3 pre() 4 def pre(): 5 print("我在pre函数里···") 6 next()
>>>输出
1 我在next()函数里··· 2 3 我在pre()函数里···
1.请问一下函数有返回值吗?
1 def hello(): 2 print("Hello world!")
如果没有使用return 语句指定返回值,Python也不是什么都不返回,它会返回一个None对象,所有函数都有返回值。
1 def hello(): 2 print("Hello world!") 3 temp = hello() 4 print(temp) 5 print(type(temp))
>>>输出
1 Hello world! 2 None 3 <class 'NoneType'>
2.请问Python的return语句可以返回多个不同类型的值吗?
可以,默认用逗号隔开,最后一元祖的形式返回,你当然也可以用列表包含起来返回。eg:
1 def MyFun1(): 2 return "欧吼",2,3.45,True 3 print(MyFun1()) 4 5 def MyFun2(): 6 return ["欧吼",2,3.45,True] 7 MyFun2() 8 temp2 = MyFun2() 9 print(temp2)
3.目测以下程序会打印什么内容?
1 def fun (var): 2 var = 1314 3 print(var ,end=" ") 4 var = 520 5 fun(var) 6 print(var)
>>>1314 520
4.目测以下程序会打印什么内容?
1 var = "Hi" 2 def fun1(): 3 global var 4 var = "Baby" 5 return fun2(var) 6 def fun2(var): 7 var +="I love you" 8 fun3(var) 9 return 10 def fun3(var): 11 var = "小甲鱼" 12 print(fun1())
>>>Baby I love you
话说:小甲鱼说:
#小甲鱼建议不到万不得已不要使用全局变量,简洁的概括为:
1.代码可读性变差
2.代码安全性降低
以下关于全局变量的危言耸听是转来的,大家不防看以下:
1.它会造成不必要的变量频繁使用,特别当这个常量3没有用宏定义,“正名”时,代码阅读起来十分的吃力;
2.它会在成软件分层不合理,全局变量相当于一条快捷通道,他容易使程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易自作多情地关注起上层的应用。
这在软件系统的建构初期的确效率很高,功能调试进度一日千里,但是到了后期往往bug一堆,处处“补丁”,雷区遍布,说是度日如年举步维艰也不为过;
3.由于软件分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺的修改,涉及大多数模块,而缘由的代码注释却忘了更新修改,这个时候,交给后期维护者的系统就会越来越像一个“泥潭”,注释的唯一作用只是使泥潭上方再加一些迷烟瘴气;
4.全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间这个时候如果处理不当,系统的bug就是随机出现的,无规律的这时候初步显示出病入膏肓的特征来了,没有大牛力挽狂澜,注定慢性死亡;
5.无需多言,如果您的系统中出现大量使用全局变量,那么您已经成功的大奥一个畸形的系统,它处于一个神秘的稳定状态!你看这台机器,机器看着你,相顾无言,心中发毛,你不确定她什么时候会崩溃,也不晓得下一次投诉什么时候。原因在哪。
动动手:
0.编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用会问的形式写成的对联,即可顺读,也可以倒读,例如:上海自来水来自上海)
程序执行结果如图:
1 def fun(temp): 2 lenght =len(temp) 3 last = lenght -1 4 lenght = lenght//2 5 aim =1 6 for each in range(lenght): 7 if temp[each] != temp[last]: 8 aim =0 9 break 10 last -=1 11 if aim == 1: 12 print("是回文联") 13 else: 14 print("不是回文联") 15 16 print("检查是否为回文联") 17 temp = input("请输入一句话:") 18 fun(temp)
1.编写一个函数,分别统计出传入字符串参数(可能不只是一个参数)的英文字母、空格、数字和其他字符的个数。程序执行结果如图:
1 def count(*params): 2 alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 3 numbers = "0123456789" 4 other = "" 5 lenght= len(params) 6 for i in range(lenght): 7 num1 = 0 8 num2 = 0 9 num3 = 0 10 for each in params[i]: 11 lenght = len(params[i]) 12 if each in alphabet: 13 num1 +=1 14 elif each in numbers: 15 num2 +=1 16 elif each == " ": 17 num3 +=1 18 else: 19 num4 = lenght - num1 - num2-num3 20 21 print("第%d个字符串共有%d个字符:英文字母:%d个,数字%d个,空格%d个,其他字符%d个" % (i+1,lenght,num1, num2, num3, num4)) 22 23 count('thank you very much.','I love you ,you are very good.','123木头人')
方法二:
1 def count(*params): 2 lenght= len(params) 3 for i in range(lenght): 4 num1 = 0 5 num2 = 0 6 num3 = 0 7 for each in params[i]: 8 lenght = len(params[i]) 9 if each.isalpha(): 10 num1 +=1 11 elif each.isdigit(): 12 num2 +=1 13 elif each.isspace(): 14 num3 +=1 15 else: 16 num4 = lenght - num1 - num2-num3 17 18 print("第%d个字符串共有%d个字符:英文字母:%d个,数字%d个,空格%d个,其他字符%d个" % (i+1,lenght,num1, num2, num3, num4)) 19 20 count('thank you very much.','I love you ,you are very good.','123木头人')
2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!