Как определить переменные в функции с помощью ввода? - PullRequest
0 голосов
/ 06 февраля 2019

Я был бы очень рад, если бы кто-то мог помочь мне с этой проблемой, потому что я как бы застрял здесь.Я пытаюсь «вызвать» функцию, вызывая ее по имени, а затем добавляя переменные, записывая числа, разделенные пробелом между ними.

#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

Я очень благодарен за каждое предложение

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете превратить список в строку, выполнив 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, боюсь, вам нужно будет объяснить, что вы имели в виду.

0 голосов
/ 06 февраля 2019

Вы можете «распространить» / применить список аргументов к функции, используя *:

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

Обратите внимание на *.Input[1:len(Input)] самостоятельно передает список ввода как x.* распространяет список так, что он рассматривается как несколько аргументов.Думайте об этом как о сведении списка данных в список аргументов.

...