2017-02-15 1 views
0

私は計算のためのユーザー入力を使いたいと思いますが、add(* args)とsub(* args)を定義していますが、if文のadd()で* argsを書くとそのshow error:argsは定義されていません mは、そのは、mの値ではない合計私を示して....if文の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) 

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

あなたがaddsub関数を呼び出すときに何かを渡して、またユーザー入力のすべてを保存していません。ユーザー入力をリストに保存してから、関数にリストを渡す必要があります。関数のシグネチャから任意の数の引数ではなく、リストに渡したい場合は、*も削除する必要があります。

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

しかし、どのように最後の「場合のn == 1で、リストを追加する: アドオン(int型(elif n == 2: sub(int(入力)(範囲内)) ' – Trunks

+0

@Trunksわかりません。このアプローチを使用する場合、 'append'を使う必要はありません。 「追加」するリストはありません。 – DeepSpace

関連する問題