我正在尝试通过使用定义的函数(其中变量是列表名称)来缩短列表创建过程。运行时,代码将跳过用户输入。
运行代码时,用户输入部分似乎被完全跳过了,因此,它只打印一个空列表。我尝试弄乱变量名,并在代码的不同点定义事物。我是否错过了Python的一般规则,或者我缺少的代码中有明显的错误?
def list_creation(list_name):
list_name = []
num = 0
while num != "end":
return(list_name)
num = input("Input a number: ")
print("To end, type end as number input")
if num != "end":
list_name.append(num)
list_creation(list_Alpha)
print("This is the first list: " + str(list_Alpha))
list_creation(list_Beta)
print("This is the second list: " + str(list_Beta))
我希望两个单独的列表打印出用户输入的数字。目前,它只打印出两个空列表。
答案 0 :(得分:2)
您需要将return语句移至函数末尾,因为return总是会停止函数执行。
(据我所知)您尝试执行的操作也不可行。您不能通过在函数中将其作为变量来分配变量,而应该彻底删除参数1A,1B
2A,2B
3A,3B
,因为无论如何您都立即重新分配它,并像list_name
请注意,用户可能希望在开始输入之前先查看整个“要结束,键入end作为数字输入”位。
答案 1 :(得分:0)
您的代码中有几个基本缺陷。
- 您重新定义
public class NewsTotal() { public bool IsUseRegisteredAddress{get;set;} }
和list_name
列表用作返回的Alpha
。
(Beta
将其与{{1 }}和list_name = []
,因此您的功能将变得无用。)- 您在启动while循环后立即从函数中返回
(因此您将永远无法到达输入)
在您的职能中:
Alpha
Beta
应该在while循环的末尾才能到达您的输入:
list_Alpha = []
list_Beta = []
def list_creation(list_name):
# list_name = [] <-- is no longer Alpha or Beta, get rid of this!
num = 0
...
答案 2 :(得分:0)
动态定义变量名是不明智的。话虽如此,以下代码应该可以解决问题。问题包括错误的return语句以及变量名与变量本身的混淆。
def list_creation(list_name):
g[list_name] = []
num = 0
while num != "end":
num = input("Input a number: ")
print("To end, type end as number input")
if num != "end":
g[list_name].append(num)
g = globals()
list_creation('list_Alpha')
print("This is the first list: " + str(list_Alpha))
list_creation('list_Beta')
print("This is the second list: " + str(list_Beta))