10
def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False

print sum10(7, 3)
print sum10(-13, -17)
print sum10(3, 8)

結果は次のとおりです。

True
True
None

私が期待したものではありません:

True
True
False

何か案が?

4

6 に答える 6

29

あなたのコード

def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False

と同等です

def sum10(a, b):
    if sum([a, b]) % 10 == 0: 
        return True; return False

したがって、return False評価されることはありません。


いくつかの(おそらく無限の)選択肢:

    if sum([a, b]) % 10 == 0: 
        return True
    return False

また

    return sum([a, b]) % 10 == 0

また

    return True if sum([a, b]) % 10 == 0 else False

また

    return False if (a+b) % 10 else True

または(最も読みやすいIMHO)

    return not (a + b) % 10
于 2012-10-30T07:56:22.660 に答える
10

これはあなたが望むものです。

def sum10(a, b):
    return sum([a, b]) % 10 == 0

また、IfPythonの三項は次のように機能します

<True Statment> if <Conditional Expression> else <False Statement>

例えば

True if sum([a,b]) % 10 == 0 else False

プラス演算子の使用もお勧めしますか?

True if (a+b) % 10 == 0 else False
于 2012-10-30T07:56:11.827 に答える
2

if-elseワンライナーが必要な場合は、次のように記述する必要があります。

return True if sum([a, b]) % 10 == 0 else False

その1つのライナーに2つのポイントがないことに注意してください。

于 2012-10-30T07:58:27.160 に答える
1

return Falseの外ではなく、ifの中にあるので、実行されることはないと思います。

したがって、if条件でtrueをとると、が実行されますがreturn True、2番目のステートメントは実行されません。

于 2012-10-30T07:59:14.480 に答える
1
def sum10(a, b):
    return sum([a, b])%10 == 0
于 2016-06-12T15:55:26.327 に答える
0

すぐにTrueまたはFalseを返す代わりに、結果をブール変数に格納して、最後にその変数を返すようにすることができます。例えば:

def sum(a,b):
  bool result
  if sum([a, b]) % 10 == 0:
    bool=True
  else:
    bool=False
  return bool 
于 2021-01-21T03:48:32.153 に答える