输入可以存在于Python中定义的函数中吗?

时间:2019-01-23 02:05:48

标签: python python-3.x function input

我正在尝试通过使用定义的函数(其中变量是列表名称)来缩短列表创建过程。运行时,代码将跳过用户输入。

运行代码时,用户输入部分似乎被完全跳过了,因此,它只打印一个空列表。我尝试弄乱变量名,并在代码的不同点定义事物。我是否错过了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))

我希望两个单独的列表打印出用户输入的数字。目前,它只打印出两个空列表。

3 个答案:

答案 0 :(得分:2)

您需要将return语句移至函数末尾,因为return总是会停止函数执行。

(据我所知)您尝试执行的操作也不可行。您不能通过在函数中将其作为变量来分配变量,而应该彻底删除参数1A,1B 2A,2B 3A,3B ,因为无论如何您都立即重新分配它,并像list_name

那样调用它

请注意,用户可能希望在开始输入之前先查看整个“要结束,键入end作为数字输入”位。

答案 1 :(得分:0)

您的代码中有几个基本缺陷。

  
      
  1. 您重新定义public class NewsTotal() { public bool IsUseRegisteredAddress{get;set;} } list_name列表用作返回的Alpha
    Beta将其与{{1 }}和list_name = [],因此您的功能将变得无用。)
  2.   
  3. 您在启动while循环后立即从函数中返回
    (因此您将永远无法到达输入)
  4.   

在您的职能中:

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))