2017-02-15 1 views
0

Я хочу использовать пользовательский ввод для вычисления, и у меня есть определение add (* args) и sub (* args), но если я напишу * args в add() в выражении if, то его show error: args not defined и если write м, то его показывает мне значение м не общий ....Что я должен использовать в качестве параметра в выражениях add() и sub() в if?

def add(*args): 
    total = 0 
    for a in args: 
     total += a 
    print(total) 

def sub(*args): 
    total = 0 
    for a in args: 
     total -= a 
    print(total) 

print('1-add\n2-sub') 
n=int(input("enter choice:")) 
counter = int(input("enter no of No.to be calculated:")) 
if n == 1: 
    for i in range(counter): 
     m=int(input("enter no.")) 
    add() 
elif n == 2: 
    for i in range(counter): 
     m = int(input("enter no.")) 
    sub() 
else: 
    print("invalid") 

ответ

1

Вы не проходящее ничего при вызове add и sub функции, ни сохранения всех введенных пользователем. Вам нужно сохранить вход пользователя в список, а затем передать список функциям. Обратите внимание, что вам также необходимо удалить * из сигнатур функций, которые вы хотите передать в списке, а не произвольное количество аргументов.

def add(args): 
    total = 0 
    for a in args: 
     total += a 
    print(total) 

def sub(args): 
    total = 0 
    for a in args: 
     total -= a 
    print(total) 

. 
. 

if n == 1: 
    li = [] 
    for i in range(counter): 
     li.append(int(input("enter no."))) 
    add(li) 
elif n == 2: 
    li = [] 
    for i in range(counter): 
     m = li.append(int(input("enter no."))) 
    sub(li) 

Имейте в виду, вы могли бы сделать код короче (не обязательно более читаемым) с помощью генераторов:

if n == 1: 
    add(int(input()) for i in range(counter)) 
elif n == 2: 
    sub(int(input()) for i in range(counter)) 
+0

но как добавить список в прошлом «, если п == 1: добавить (интермедиат (input()) для i в диапазоне (счетчик)) elif n == 2: sub (int (input()) для i в диапазоне (счетчик)) ' – Trunks

+0

@Trunks Я не уверен, что понимаю. Вам не нужно использовать 'append', если вы используете этот подход. Нет списка для 'append' to. – DeepSpace

Смежные вопросы