实验目的
- 掌握Python中函数的编写方法
- 掌握Python中函数参数的各种用法
- 理解变量的作用域的概念
- 能用函数编写可重用的代码简化程序
实验内容
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()