实验6 Python函数

实验目的

  1. 掌握Python中函数的编写方法
  2. 掌握Python中函数参数的各种用法
  3. 理解变量的作用域的概念
  4. 能用函数编写可重用的代码简化程序

实验内容

1. 求一个整数各个数字的和

编写一个函数,计算一个整数各个数字的和。使用下面的函数头:

def sum_digits(n):

例如:sum_digits(234) 返回9(2+3+4)

编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。

[提示]

使用取余运算符%提取数字,而使用整除//去掉提取出来的数字。例如:使用234%10(=4)抽取4,然后使用234//10(=23)从234中去掉4。使用一个循环来反复提取和去掉每一个数字,直到所有的数字被踢除完为止。

[运行示例]

输入一个整数: 123 [按下回车]

6

# 1.	求一个整数各个数字的和
# 编写一个函数,计算一个整数各个数字的和。使用下面的函数头:
# def sum_digits(n):
# 例如:sum_digits(234) 返回9(2+3+4)
# 编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。

def sum_digits(n):
    sumo = 0
    while n:
        sumo += n % 10
        n //= 10
    return sumo


def main():
    n = eval(input("输入一个整数:"))
    ans = sum_digits(n)
    print(ans)


if __name__ == '__main__':
    main()

# [提示]
# 使用取余运算符%提取数字,而使用整除//去掉提取出来的数字。例如:使用234%10(=4)抽取4,然后使用234//10(=23)从234中去掉4。使用一个循环来反复提取和去掉每一个数字,直到所有的数字被踢除完为止。
# [运行示例]
# 输入一个整数: 123 [按下回车]
# 6

2. 选择排序

编写函数,实现选择排序算法,默认是升序排列,函数头如下:

def selection_sort(lst, ascending=True):

编写测试程序,提示用户输入若干个整数,调用selection_sort()函数对它们进行升序排序,并输出排序后的整数序列。

[提示]

选择排序会找到列表中的最小元素并将它和第一个元素交换,然后找到剩余元素中最小的元素并和剩余列表的第一个元素交换,以此类推,直到只剩一个元素。

# 2.	选择排序
# 编写函数,实现选择排序算法,默认是升序排列,函数头如下:
# def selection_sort(lst, ascending=True):
# 编写测试程序,提示用户输入若干个整数,调用selection_sort()函数对它们进行升序排序,并输出排序后的整数序列。
# [提示]
# 选择排序会找到列表中的最小元素并将它和第一个元素交换,然后找到剩余元素中最小的元素并和剩余列表的第一个元素交换,以此类推,直到只剩一个元素。

# 2 8 32 13 2 3 45

def selection_sort(lst, ascending=True):
    # print(lst)
    length = len(lst)
    print(length)
    for i in range(length):
        for j in range(i + 1, length):
            if lst[i] > lst[j]:
                lst[i], lst[j] = lst[j], lst[i]
    return lst


def main():
    lst_input = []
    lst_input = map(int, input("请输入整数:").split())
    lst_sorted = selection_sort(list(lst_input))
    print(lst_sorted)


if __name__ == '__main__':
    main()

3. 随机数字选择器

可以使用random.shuffle(lst)打乱一个列表。不使用random.shuffle(lst),编写函数来打乱一个列表并返回这个列表。使用下面的函数头:

def shuffle(lst):

编写一个测试程序,提示用户输入一个数字列表,调用这个函数打乱数字,然后显示这些数字。

# 3.	随机数字选择器
# 可以使用random.shuffle(lst)打乱一个列表。不使用random.shuffle(lst),编写函数来打乱一个列表并返回这个列表。使用下面的函数头:
# def shuffle(lst):
# 编写一个测试程序,提示用户输入一个数字列表,调用这个函数打乱数字,然后显示这些数字。

# 2 8 32 13 2 3 45
import random


def shuffle(lst):
    new_lst = lst.copy()
    length = len(new_lst)
    for i in range(0, length):
        length -= 1
        i = random.randint(0, length)
        new_lst[i], new_lst[length] = new_lst[length], new_lst[i]

        return new_lst


def main():
    lst_input = list(map(int, input("请输入一个数字列表:").split()))
    # 使用 shuffle函数
    print(shuffle(lst_input))

    # 使用random库的 random.shuffle()方法 不生成新的列表,只是将原列表打乱
    # random.shuffle(lst_input)
    # print(lst_input)


if __name__ == '__main__':
    main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值