本文是跟着鱼C论坛小甲鱼零基础学习Python3的视频学习的,课后题也是跟随每一课所附属的题目来做的,根据自己的理解和标准答案记录的笔记。
第十九课
测试题:
0.下边程序会输出什么?
def next():
print('我在next()函数里...')
pre()
def pre():
print('我在pre()函数里...')
next()
答:会输出
我在next()函数里...
我在pre()函数里...
1.请问以下这个函数有返回值吗?
def hello():
print('Hello FishC!')
答:有,返回值是 none 。
>>> print(hello())
Hello FishC!
None
2.请问Python的return语句可以返回多个不同类型的值吗?
答:可以,但是要用元组和列表进行打包起来形成一个整体。(这样是返回一个整体,整体包含了多个不同类型的值)
3.请目测以下程序会打印什么内容?
def fun(var):
var = 1314
print(var, end = '')
var = 520
fun(var)
print(var)
答:会打印出 1314 与 520 。(变量赋值如果是在函数域内进行赋值的话,作用效果只在函数域内有效。全局变量则会在整个代码区产生效果并且可以随时访问。而函数内的局部变量则不行。所以不要在函数内试图定义一个全局变量,就算名字相同,也不能够影响到全局变量,而只能在函数过程生效。)
1314
520
4.目测以下程序会打印什么内容?
var = 'Hi'
def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
fun3(var)
return var
def fun3(var):
var = ' 小甲鱼 '
print(fun1())
答:会打印出 ‘Baby I love you’。
>>> print(fun1())
Baby I love you
>>>
分析整个代码我们可以发现,首先在全局声明了一个变量 var ,接着定义函数 fun1() 并且将全局变量 var 代入函数域内(声明域内的 var 是全局变量),然后将变量 var 改为 'Baby' ,函数 fun1() 返回的是 第二个定义函数 fun2(var) 的值。第二个定义的函数 fun2(var) 定义为 var -= 'I love you' 并且返回的是 var 的值。第三个函数 fun3(var) 定义为将变量 var 改变为 '小甲鱼' 。我们最后运行的是 print(fun1()) ,但实际上已经定义好三个函数里面只引用了两个函数,即在函数fun1()内将全局变量声明并改变之后运行函数fun2(var)代入var进行函数过程并且得到最终返回值var,函数fun1()的返回值即是将函数fun1()过程后所得返回值代入函数fun2(var)过程之后所得的返回值。
动动手:
0.编写一个函数,判断传入的字符串参数是否为“回文联”。
【回文联,它是我国对联中的一种。用回文形式写成的对联,既可顺读,也可倒读。不仅它的意思不变,而且颇具趣味。例如:
斗鸡山上山鸡斗,龙隐岩中岩隐龙,上海自来水来自海上之类都是 “回文联” 的形式。】
答:
#方法一:
def hwlpd(words):
length = len(words)
count = 0
for x in range(length):
if words[x] == words[-x-1]:
count += 1
if count == length:
print('该句子是回文联')
else:
print('该句子不是回文联')
#方法二:
def hwlpd(words):
lista = list(words)
listb = list(reversed(words))
if lista == listb:
print('该句子是回文联')
else:
print('该句子不是回文联')
1.编写一个函数,分别统计传入字符串参数(可能不止一个参数)的英文字母、空格、数字和其它字符的个数。
答:
def tongji(*words):
length = len(words)
for x in range(length):
letter = 0
space = 0
number = 0
another = 0
ler = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
spr = ' '
nur = '0123456789'
for each in words[x]:
if each in ler:
letter += 1
elif each == spr:
space += 1
elif each in nur:
number += 1
else:
another += 1
print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (x + 1, letter, number, space, another))