13-python作业
Release
- Setup
- 安装包下载的文件默认在桌面上.
例题
例 6-7
改进sayHello()函数,使之能输出多行字符串。调用该函数打印3行“Hello!”字符串。
正常作业:
1
2
3
4
5
6
7
8
9
10
11
12
13
14#example6_7
#coding=utf-8
def sayHello(s, n):
# 函数定义
for i in range(n):
print(s)
# 主程序
sayHello("Hello!", 3) # 位置参数形式
# sayHello(3, "Hello!") error
print("位置参数方式调用结束,开始关键参数形式的调用")
sayHello(n=3, s="Hello!") # 关键参数形式我的:
1
2
3
4
5
6
7# 6-7
def sayHello(s,n):
print(f'{s}\n'*n,end='')
# main
sayHello("Hello!", 3)
sayHello(n=3, s="Hello!")
例 6-8
编写一个函数,有三个形参,其中两个传递字符分别作为开始字符和结束字符,打印出字符编码表中两个字符之间的所有字符(包含参数中的两个字符),每个字符宽度占4位。每行打印的字符个数由第三个形式参数指定。调用该函数打印出!和9之间的所有字符。
正常作业:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#example6_8
#coding=utf-8
def printChars(ch1, ch2, number):
count = 0
for i in range(ord(ch1),ord(ch2) +1):
count+=1
if count % number!=0:
print('{:4s}'.format(chr(i)),end='')
else:
print(' {:4s}'.format(chr(i)))
printChars("!","9",10)
print ()
printChars(number=10, ch2="9", ch1="!")
print()
printChars("!", number=10,ch2="9")我的:
1
2
3
4
5
6
7
8
9# 6-8
def printChars(ch1,ch2,n):
lst = [chr(_) for _ in range(min(ord(ch1),ord(ch2)),max((ord(ch1),ord(ch2)))+1)]
for i in range(len(lst)):
if i % n == 0 and i != 0:
print()
print(f'{lst[i]:<4}',end='')
print(printChars('!','9',10))
例 6-9
改进sayHello()函数,可以控制行数列数
正常作业:
1
2
3
4
5
6
7
8
9
10
11
12#example6_9
#coding=utf-8
def sayHello(s="Hello!", n=2,m=1):
for i in range(n):
print(s*m)
sayHello()
print()
sayHello("Ha!",3,4)
print()
sayHello("Ha!",m=2)我的:
1
2
3
4
5
6# 6-9
def sayHello(s="Hello!", n=2,m=1):
print(f'{s*m}\n'*n,end='')
# main
sayHello()
例 6-12
编写一个函数,接收任意个数的参数并打印出来。
正常作业:
1
2
3
4
5
6
7
8
9#example6_1
#coding=utf-8
def all_2(*args):
print(args)
return s
print(all_2(1,2,3))
print(all_2(1, 2,4, 5, 6))我的:
1
# 略
例 6-13
编写一个函数,接收任意个数的数字参数并求和。
正常作业:
1
2
3
4
5
6
7
8
9
10#example6_13
#coding=utf-8
def all_2(*args):
print(args)
s=sum(args)
return s
print(all_2(1,2,3))
print(all_2(1, 2,4, 5, 6))我的:
1
# 略
例 6-14
以标识符一个星号(*)为前缀的形参可以和其他普通形参联合使用
这时一般将以(**)为标识符的形参放在形参列表的后*面,普通形参放在前面。
正常作业:
1
2
3
4
5
6
7
8
9#example6_14
#coding=utf-8
def all_3(brgs,*args):
print(brgs)
print(args)
all_3("abc", "a",2,3,"b")
all_3("abc")我的:
1
# 略
例 6-19
以单变量为形参、以序列为实参传递参数案例。分析程序运行结果并解释原因。
正常作业:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#example6_19
#coding=utf-8
def snn3(x, y,z):
return x+y+z
aa=[1,2,3]
print(snn3(*aa))
bb=(6, 2,3)
print(snn3(*bb))
ss="abc"
print(snn3(*ss))
cc=[8,9]
print(snn3(7,*cc))
print(snn3(*cc,20))我的:
1
# 略
作业
练 13-1
编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。主程序中分别接收1,2,3,4和5,6,7,8,9,输出返回的元组。
正常作业
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#exercise13_1.py
#coding:utf-8
def avg(*numbers):
if len(numbers) == 0:
return (0,)
average = sum(numbers) / len(numbers)
above_average = tuple(num for num in numbers if num > average)
return (average,) + above_average
# Main
result1 = avg(1, 2, 3, 4)
print(result1)
result2 = avg(5, 6, 7, 8, 9)
print(result2)我的
1
2
3
4
5
6# 13-1
def avg(*num):
return (avgnum:=sum(num)/len(num),) + tuple(i for i in num if i > avgnum)
print(avg(1, 2, 3, 4))
print(avg(5, 6, 7, 8, 9))