from os import system
def option_1(product_list):
"""
:function prints the inputed list.
:param product_list: inputed list.
:type product_list: list.
:return: none.
:rtype: none.
"""
print(product_list)
def option_5(product_list):
"""
:function takes user input and deleted the element with the same name in the list.
:param product_list: the inputed list.
:param user_input_product: user input.
:type product_list: list.
:type user_input_product: string.
:return: the list after changes.
:rtype: list.
"""
user_choice = str(input("Please Enter The Product You Want Tp Delete:"))
product_list.remove(user_choice)
return product_list
def option_6(product_list):
"""
:function takes user input and addes it to the list as an element.
:param product_list: the inputed list.
:param user_input_product: user input.
:type product_list: list.
:type user_input_product: string.
:return: the list after changes.
:rtype: list.
"""
user_input_product = str(input("Please Enter The Name Of The Product You Want To Enter:"))
product_list += [user_input_product]
return product_list
def option_8(product_list):
"""
:function deletes the duplicates in a list.
:param product_list: the inputed list.
:type product_list: list.
:return: the list after changes.
:rtype: list.
"""
product_list = set(product_list)
return product_list
def option_manue():
product_list = []
user_choice = int(input("Please Enter A Number Between 1 To 9:"))
if user_choice == 1:
option_1(product_list)
option_manue()
elif user_choice == 5:
product_list = option_5(product_list)
option_manue()
elif user_choice == 6:
product_list = option_6(product_list)
option_manue()
elif user_choice == 8:
product_list = option_8(product_list)
option_manue()
def main():
option_manue()
if __name__ == "__main__":
main()
system("pause")
此代码根据用户输入进行用户输入和选项。 有9个选项: 列出清单。 2.列出清单的长度。 3.检查元素是否在列表中。 4.列表中某个元素的多少次。 5.从列表中删除元素。 6.add元素到列表。 7.删除非法元素。 8.删除重复。 附加菜单9.退出。 我的问题是我发送给选项的列表5,6,8元素即使在我返回列表时也不会改变。 (顺便说一下,我知道我用错误的方式弄错了manu,我会在代码中发现错误之后改变它)
答案 0 :(得分:1)
主要问题是option_manue
的程序流程。每次运行时,option_manue
都会将product_list
重置为[]
,这是一个空列表。由于您在自己内部调用了option_manue
,因此每次运行product_list
函数时,它都会重置option_1, option_2, option_3, ...
。这就是为什么当您尝试打印product_list
时,您的所有修改都不会显示的原因;在自身内部调用option_manue
时,数据会丢失。
解决此问题的方法是添加到代码的主要部分(不在函数内的代码部分)。保留option_manue
功能,但不要在其中调用它。而是在主体中设置一个循环,根据需要多次调用option_manue
。
最后,除非你故意创建一个递归函数,否则最好避免在自身内部调用函数,因为这会产生意想不到的结果。
希望这有帮助!
答案 1 :(得分:0)
只需将product_list
的定义移到函数option_manue
之外。即使其成为全局变量
product_list = []
def option_manue():
...