Question 1
题目描述:
给定一个列表,您需要编写两个函数,一个是modify_list
,另一个是print_list
。这两个函数的描述如下:
-
modify_list(input_list, value)
: 这个函数接收两个参数,一个是列表input_list
,另一个是整数value
。该函数应该将value
添加到input_list
的末尾。 -
print_list(input_list)
: 这个函数接收一个参数,也就是input_list
,并打印它。
要求:在这两个函数之外,定义一个main
函数,在其中初始化一个空列表my_list
。然后,调用modify_list(my_list, 10)
和print_list(my_list)
。你应该在控制台看到[10]
。然后,再次调用modify_list(my_list, 20)
和print_list(my_list)
。你应该在控制台看到[10, 20]
。
然而,main
函数里的my_list
不能被modify_list
和print_list
函数直接访问,必须通过参数传递。
示例代码:
def modify_list(input_list, value):
# 在这里添加你的代码
def print_list(input_list):
# 在这里添加你的代码
def main():
my_list = []
modify_list(my_list, 10)
print_list(my_list)
modify_list(my_list, 20)
print_list(my_list)
main()
完成上述代码,以满足以上所有要求。这个问题的关键在于理解Python的作用域规则。请注意,在一个函数中修改了作为参数传递的可变对象(如列表、字典或集合)时,这些改变会反映在原始对象上。
期待你的解答。
答案
下面是完成题目要求的代码:
def modify_list(input_list, value):
# 在这里添加你的代码
input_list.append(value)
def print_list(input_list):
# 在这里添加你的代码
print(input_list)
def main():
my_list = []
modify_list(my_list, 10)
print_list(my_list) # 输出应为: [10]
modify_list(my_list, 20)
print_list(my_list) # 输出应为: [10, 20]
main()
这个问题强调了Python中作用域的规则。在这里,my_list
变量在main
函数的作用域中。但是,当我们将my_list
作为参数传递给modify_list
函数时,我们实际上是传递了对这个列表的引用,所以modify_list
函数中对input_list
的修改(即添加元素)实际上修改了my_list
。这是因为列表是可变的数据类型,在函数中对它的修改会影响原始对象。
同样,我们也通过参数将my_list
传递给print_list
函数,所以print_list
可以访问main
函数作用域中的my_list
的当前状态,并将其打印出来。
Question 2
题目描述:
编写一个 Python 程序,该程序包含以下三个函数:
-
add_value(input_dict, key, value)
: 这个函数接收三个参数:字典input_dict
,键key
,值value
。该函数应将键值对添加到字典中。 -
get_value(input_dict, key)
: 这个函数接收两个参数:字典input_dict
和键key
。它应该返回对应于键的值。如果键不存在,则返回字符串"Key not found"
。 -
remove_value(input_dict, key)
: 这个函数接收两个参数:字典input_dict
和键key
。它应该从字典中删除键及其对应的值。如果键不存在,则返回字符串"Key not found"
。
你还需要定义一个main
函数,在其中初始化一个空字典my_dict
。然后,按照以下顺序调用函数:
- 调用
add_value(my_dict, 'name', 'Alice')
- 调用
get_value(my_dict, 'name')
并打印返回的值,你应该在控制台看到Alice
- 调用
remove_value(my_dict, 'name')
- 再次调用
get_value(my_dict, 'name')
并打印返回的值,你应该在控制台看到Key not found
然而,main
函数里的my_dict
不能被add_value
, get_value
和remove_value
函数直接访问,必须通过参数传递。
示例代码:
def add_value(input_dict, key, value):
# 在这里添加你的代码
def get_value(input_dict, key):
# 在这里添加你的代码
def remove_value(input_dict, key):
# 在这里添加你的代码
def main():
my_dict = {}
add_value(my_dict, 'name', 'Alice')
print(get_value(my_dict, 'name')) # 输出应为: Alice
remove_value(my_dict, 'name')
print(get_value(my_dict, 'name')) # 输出应为: Key not found
main()
完成上述代码,以满足以上所有要求。这个问题的关键在于理解Python的作用域规则,以及字典的使用。
答案
以下是完成题目要求的代码:
def add_value(input_dict, key, value):
# 在这里添加你的代码
input_dict[key] = value
def get_value(input_dict, key):
# 在这里添加你的代码
return input_dict.get(key, "Key not found")
def remove_value(input_dict, key):
# 在这里添加你的代码
if key in input_dict:
del input_dict[key]
else:
return "Key not found"
def main():
my_dict = {}
add_value(my_dict, 'name', 'Alice')
print(get_value(my_dict, 'name')) # 输出应为: Alice
remove_value(my_dict, 'name')
print(get_value(my_dict, 'name')) # 输出应为: Key not found
main()
在这个问题中,我们首先在main
函数中创建了一个字典my_dict
。然后,我们通过参数将my_dict
传递给了add_value
, get_value
和remove_value
函数。
在add_value
函数中,我们将键值对添加到了传递的字典中。在get_value
函数中,我们使用了字典的get
方法来尝试获取键对应的值。如果键不存在,get
方法会返回提供的默认值"Key not found"
。在remove_value
函数中,我们首先检查了键是否在字典中,如果在,我们就删除这个键值对,否则我们返回"Key not found"
。
这个问题强调了Python中作用域的规则,以及字典在函数中的行为。因为字典是一个可变的数据类型,所以在函数中对它的修改会影响原始对象。