zzy
13-python作业

13-python作业


        

Release

  • Setup
  • 安装包下载的文件默认在桌面上.

        

例题

例 6-7

改进sayHello()函数,使之能输出多行字符串。调用该函数打印3行“Hello!”字符串。

  1. 正常作业:

    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!") # 关键参数形式
  2. 我的:

    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. 正常作业:

    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")
  2. 我的:

    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. 正常作业:

    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)
  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. 正常作业:

    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))
  2. 我的:

    1
    # 略

例 6-13

编写一个函数,接收任意个数的数字参数并求和。

  1. 正常作业:

    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))
  2. 我的:

    1
    # 略

例 6-14

以标识符一个星号(*)为前缀的形参可以和其他普通形参联合使用

这时一般将以(**)为标识符的形参放在形参列表的*面,普通形参放在前面。

  1. 正常作业:

    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")
  2. 我的:

    1
    # 略

例 6-19

以单变量为形参、以序列为实参传递参数案例。分析程序运行结果并解释原因。

  1. 正常作业:

    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))
  2. 我的:

    1
    # 略

作业

练 13-1

编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。主程序中分别接收1,2,3,4和5,6,7,8,9,输出返回的元组。

  1. 正常作业

    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)
  2. 我的

    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))
本文作者:zzy
本文链接:http://周梓煜.com/2024/05/31/school-hhw-13-python/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可