激凹みから立ち直る方法

パイソン文法で
def calc(*kazu,mode):
total=0
if mode=="+":
for i in kazu :
total +=i
return total

if mode=="-":
for i in kazu :
total -=i
return total

print(calc(1,2,7788,mode="+"))
print(calc(1,2,99,mode="-"))
結果は
7791
0
となるが 0のところどうして-102にならないのでしょうか。ご教授ください。

A 回答 (3件)

しかも、何の本使ってるか分からんけど、発想がC臭い。


Pythonではそういう風に書くべきじゃない。

Python「らしい」コードは次のように書きます。

def calc(*kazu, mode):
 if mode == "+":
  return sum(kazu)
 else:
  return sum([-i for i in kazu])

print(calc(1, 2, 7788, mode = "+"))
print(calc(1, 2, 99, mode = "-"))

累積器totalを用意して・・・なんつー発想はしちゃダメ。
Pythonではもっとなるたけ短く仕上げる事を考えるべき。
(便利なsum関数があるんだから、それを徹底利用するように考えるべきです)
    • good
    • 0

>sum([-i for i in kazu])



'-' モードだと符号反転するだけだから
-sum(kazu)
ですね(^^;
    • good
    • 0

6行目のreturnのインデントがifと同じなんでしょう。



これくらいのソースならスクショをとるか
インデントを全角スペースで表現すると
良いですよ。

正しいソース
「パイソン文法で」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報