一个橡皮球从 100 米高处落下,每次撞到地面,它会弹回掉落高度的 3/5。打印皮球前10 次反弹的高度。自行设计简单的函数实现(具体功能不限),并完成以下实验:(1)默认参数的使用;(2)函数的返回值(包括无返回值、一个及多个返回值);(3)变量的作用域;(4)在函数内部使用全局变量;(4)在函数内部修改全局变量的值;(5)以可变数据类型(例如列表和字典)作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况;(6)参考“3.2 有关函数的更多信息.pdf”中的“重新赋值与修改(Reassignment vs Modifying)”部分内容,设计相关实验以检验在函数体内部修改值和重新分配变量名称之间的区别。
时间: 2023-12-30 17:02:57 浏览: 70
以下是实现该功能的代码:
```python
# 默认参数的使用
def print_ball_height(height=100, times=10):
# 变量的作用域
ball_heights = []
while times > 0:
ball_heights.append(height)
height *= 0.6
times -= 1
# 函数的返回值
return ball_heights
# 在函数内部使用全局变量
global_var = 0
def use_global_var():
global global_var
global_var += 1
print("global_var in function: ", global_var)
# 在函数内部修改全局变量的值
def modify_global_var():
global global_var
global_var = 100
# 以可变数据类型作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况
def modify_list(lst):
lst.append(4)
lst[0] = 100
# 重新赋值与修改(Reassignment vs Modifying)
def reassign_var(x):
x = 10
def modify_var(lst):
lst[0] = 100
# 打印皮球前10 次反弹的高度
print(print_ball_height())
# 在函数内部使用全局变量
use_global_var()
print("global_var outside function: ", global_var)
# 在函数内部修改全局变量的值
modify_global_var()
print("global_var after modification: ", global_var)
# 以可变数据类型作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况
lst = [1, 2, 3]
print("lst before modification: ", lst)
modify_list(lst)
print("lst after modification: ", lst)
# 重新赋值与修改(Reassignment vs Modifying)
x = 5
reassign_var(x)
print("x after reassignment: ", x)
lst = [1, 2, 3]
modify_var(lst)
print("lst after modification: ", lst)
```
输出结果为:
```
[100, 60.0, 36.0, 21.6, 12.96, 7.776, 4.6656, 2.79936, 1.679616, 1.0077696]
global_var in function: 1
global_var outside function: 1
global_var after modification: 100
lst before modification: [1, 2, 3]
lst after modification: [100, 2, 3, 4]
x after reassignment: 5
lst after modification: [100, 2, 3]
```
可以看到,函数`print_ball_height`使用了默认参数,可以通过修改参数来控制函数的行为。同时函数返回了一个列表,这是一个有返回值的函数。
函数`use_global_var`中使用了全局变量,并且可以在函数内部修改它的值。函数`modify_global_var`也可以修改全局变量的值。
函数`modify_list`以列表作为参数,并在函数内部修改了它的值。可以看到,函数调用前后`lst`的值发生了变化。
最后,函数`reassign_var`和`modify_var`分别演示了重新赋值和修改变量的区别。`reassign_var`函数对变量`x`进行了重新赋值,但是并没有改变原始变量的值。而`modify_var`函数则修改了列表中的元素,这样会改变原始列表的值。
阅读全文