【问题标题】:How to define Variables in a Function by Input?如何通过输入定义函数中的变量?
【发布时间】:2019-02-06 01:37:48
【问题描述】:

如果有人能帮我解决这个问题,我会非常高兴,因为我有点卡在这里。我试图“触发”该函数,方法是按名称调用它,然后添加变量,通过写入数字,这些数字之间用空格分隔。

#I tried:
#(Input: Test1 4 5)
Input = input().split()

def Test1(X,Y = 3):
     print(X,Y)

dic = {'Test1':Test1}
dic[Input[0]](Input[1:len(Input)])
#But it wil give me: ['4', '5'] 3 instead of just 4 5

我想定义 X 和 Y,而不仅仅是我刚才所做的 X。

我正在使用 py3.0

我非常感谢每一个建议

【问题讨论】:

  • 出于好奇,您为什么认为它会“将列表一分为二”? Input[1:len(Input)] 是单个参数。
  • 好的,但是如何从中获得两个参数。我定义 X 和 Y 而不仅仅是 X?
  • 所以您基本上是在尝试通过从空格分隔的字符串中解析方法名称和参数来调用 Test1 方法?
  • Input 是一个字符串列表,输入字符串按空格分割。您的代码中没有任何内容将这些字符串转换为数字。
  • 加一个 * dic[Input[0]](*Input[1:len(Input)])

标签: python function input


【解决方案1】:

您可以使用* 将参数列表“传播”/应用到函数:

dic[Input[0]](*Input[1:len(Input)])

注意*Input[1:len(Input)] 自己将输入列表作为x 传递。 * 将列表展开,因此它被视为多个参数。可以将其视为将数据列表展平到参数列表中。

【讨论】:

    【解决方案2】:

    您可以像这样通过join 将列表转换为字符串:

    Input = input().split()
    
    def Test1(X,Y = 3):
         print(X,Y)
    
    dic = {'Test1':Test1} dic[Input[0]](' '.join(Input[1:len(Input)]))
    

    如果您对为什么之后仍然打印 3 感到困惑,那么函数 Test1 接受两个变量,但您只传递一个变量给它,因此它会打印您设置默认值的另一个 (Y),如果你想对 Y 做点什么,恐怕你需要进一步解释你的想法。

    【讨论】:

    • 注意输出。他们只想要4 5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多