开发者学堂课程【Python入门 2020年版:函数习题讲解1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10372
函数习题讲解1
内容介绍:
一、1-7题讲解过程
二、8-12题讲解过程
三、13-15题讲解过程
一、1-7题讲解过程
第一个题目较为简单,就不详细说明。
(1)第二题编写一个函数,求多个数得最大值
代码内容为:
def get_max(*args):
for arg in args:
if arg > x
x = arg
rerurn x
print(get_max(1,9,6,3,4,5))
运行后结果为:
(2)编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
加入代码n个骰子之和的代码,def get_sum(n):
,并且骰子摇的数由于是随机数,需要加入x = random.randint(1,6)
,在使用一个累加,最后返回m的值即可。
代码内容为:
from random import random
def get_max(*args):
x = args[0]
for arg in args:
if arg > x
x = arg
return m
print(get_max(1,9,6,3,4,5))
print(get_sum(5))
到目前为止,运行后会报错,这是因为在前面的导包出现问题,用语句 import random 导入 random.py 文件;而原来的语句是导入 random 模块中的 random 类,导入错误。
将导包语句修改为 import random 语句后,运行结果为:
第一运行如下图:
第二次结果如图:
(3)编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串。
加入代码:
new_str =
‘ ’
for w in word :
if w.isalpha():
new_str += w
return new_str
并输出结果print(get_alpha(‘hello123’))
整体代码内容为:
def get_max(*args):
x = args[0]
for arg in args:
if arg > x
x = arg
rerurn x
def get_num(n)
m=0
print(get_max(1,9,6,3,4,5))
print(get_sum(5))
print(get_alpha(
‘hello123good456’))
运行结果为:
(3)写一个函数,默认求10的阶乘,也可以求其他数字的阶乘,这其实就是一个缺省参数的一个使用。
加入以下代码,在写 range 内容是注意要写成1和n+1,不要写成0。
x = 1
for i in range(1,n+1):
x *= i
return x
整体代码内容为:
def get_max(*args):
x = args[0]
for arg in args:
if arg > x
x = arg
rerurn x
运行结果为:
如果不在打印语句中加入参数,就会打印出10的阶乘的内容,数值较大,如下图。
(5)写一个函数,求多个数的平均值
加入以下语句:
def get_avergae(*args):
x = 0
for arg in args :
return x / len(args
)
print (get_average(1,2,3,4,5,))
整体代码内容为:
def get_max(*args):
x = args[0]
for arg in args:
if arg > x
x = arg
rerurn x
运行结果为:
二、8-12题讲解过程
(1)写一个自己的 captalize 函数,能够将指定字符串的首字母变成大写字母。
加入语句,把小写字母改为大写字母后,还要和原来的字符串拼接
c = word[0]
if
‘z’>= c >= ‘a‘:
new_str = word[1:]
return c.upper() + new_str
return word
print(my_capitalize(‘hello’))
运行结果为:
由于一开始就去到的是小写字母h,是在a到z之间,满足这个条件就会有一个新的字符串是由原来字符串除去首字母的字符串,最后再用大写语句,将大写后的字母和新的字符串连接在一起。
如果再加入print(my_capitalize(‘34hello’))
语句,结果会变为:还是34hello的形式,因为再取第零个位置的数据时,它不满足于if的语句内容,它就会直接打印出原字符串。
(2)写一个自己的endswith函数,判断一个字符串是否以指定的字符串结束
加入语句,在这以hello为例,取‘llo‘后,是要先判断长度为三,然后从后三个开始算起。
def my_endswith(old_str,str1):
old_str[-len(str1):] == str1
print(my_endswith(
‘hello’,’llo’))
整体代码内容为:
def get_max(*args):
x = args[0]
for arg in args:
def get_factorical(n=10):
x = 1
for i in range(1,n+1):if
‘z’>= c >= ‘a‘:
new_str = word[1:]
return c.upper() + new_str
return word
print(my_endswith(
‘hello’,’llo’))
运行结果为:
如果把print语句改为print(my_endswith(‘hello’,’lxo’))
(3)写一个自己的 isdigit 函数,判断一个字符串是否是纯数字字符串。
加入代码:
Pass
只要说明字符串中的内容有一个非数字内容就代表是False,就要把pass语句换成:
if not
‘0’ <= s <= ’9’:
return False
return True
print (my_digit(‘123hd90’))
整体代码内容为:
def get_max(*args):
x = args[0]x = arg
new_str = word[1:]
return c.upper() + new_str
return word
def my_endswith(old_str,str1):
old_str[-len(str1):] == str1
def my_digit(old_str):
for s in old_str:
if not
‘0’ <= s <= ’9’:
运行结果为:
再把print语句改为print (my_digit(‘12390’))
纯数字语句,就会变为True
(3)写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母。
这个过程会比较麻烦,一旦遇到字符串修改的问题,是要由麻烦的步骤。
在这是要有小写字母全部变为大写字母,要满足‘a‘ <= s <= ’z’
加入以下代码内容:
for s in old_str:
if
‘a’ <= s <= ‘z’
Pass
因为a对应的编码是97,z对应的编码是65,这两者间差值为32。需要将pass语句更改为upper_s = chr(ord(s) – 32)
,这个语句是将他变为一个大写字母之后在重新拼接为新字符串。
拼接语句需要用到new_str = ‘’的字符串,这个字符串适用于要进行修改字符串的功能语句。
对for完整书写内容为;
if
‘a’ <= s <= ‘z’
upper_s = chr(ord(s)
– 32)
else:
new_str += s
return new_str
new_str =
‘ ’
if
‘a’ <= s <= ‘z’
upper_s = chr(ord(s)
– 32)
new_str += s
return new_str
print(get_max(1,9,6,3,4,5))
print(get_sum(5))
print(get_alpha(
‘hello123good456’))
print (get_factorical(4))
print(get_average(1,2,3,4,5,6))
再将语句该为print(my_upper(‘hel34lo’)),
三、13-15题讲解过程
(1)写一个自己的 index 函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1.先看有多少个数据,找到一个数据就放到链表中去,最后返回列表即可。如果一个列表也没找到就返回-1。
(2)写一个自己的 len 函数,统计指定序列中元素的个数。统计元素个数,直接遍历链表,看到一个就 count 加一,一个个累加得到最后的长度
(3)写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
加入代码
for i in it:
if i == ele:
Return True
else :
return False
print(my_in([‘zhangsan’,’lisi’,’wangwu ’],’lisi’))
整体代码内容为:
def get_max(*args):
x = args[0]
if arg > x
x = arg
for i in range(1,n+1):
x *= i
def get_avergae(*args):
x += arg
把print语句修改为:
print(my_in([
‘zhangsan’,’lisi’,’wangwu ’],’jack’))
运行结果为:
如果把语句改为print(my_in({‘name‘:‘zhangsan’,’age’:’18 ’},’name’))
,运行后会得到,name 是在文件里的。
这里面是一个字典,遍历 key。