72051


【記載したコード】

[code]

    def max_magnitude(nums):
        return max(abs(num) for num in nums)
    
    print(max([1,5,-500]))
    
[/code]

【エラー表示内容】

[code]

    bad operand type for abs(): 'list'
    
[/code]

【詳細】  
解答通りのコードを入力

[code]

    def max_magnitude(nums):
        return max(abs(num) for num in nums)
    
[/code]

その後、自身で出力のためにコードを追加

[code]

    print(max([1,5,-500]))
    
[/code]

コード自体は合っていると思うのですが  
どのような原因が考えられるかご教授いただきたいです。

利用コーディングアプリケーション：PyCharm CE


CC BY-SA 4.0
2020-11-19T02:09:21.570
72049
2020-11-19T03:14:17.183
2020-11-19T02:45:56.643
26370
42784
question
python
absを使用した際のエラー解消方法について


`abs()`のパラメータを`num`ではなく`nums`にして、`max_magnitude`を呼ぶように変更して実行すると同様のエラーになったので、入力ミスが原因でしょう。  
以下のようになっています。

[code]

    >>> def max_magnitude(nums):
    ...     return max(abs(nums) for num in nums)
    ...
    >>> print(max_magnitude([1,5,-500]))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in max_magnitude
      File "<stdin>", line 2, in <genexpr>
    TypeError: bad operand type for abs(): 'list'
    >>>
    
[/code]

`abs()`のパラメータを`s`の付かない`num`にすれば正常に動作しています。

[code]

    >>> def max_magnitude(nums):
    ...     return max(abs(num) for num in nums)
    ...
    >>> print(max_magnitude([1,5,-500]))
    500
    >>>
    
[/code]

まだ発生しているようなら、入力されているプログラムソースを細かく確認してみてください。


CC BY-SA 4.0
2020-11-19T03:14:17.183
72051
2020-11-19T03:14:17.183
26370
72049
answer