0

ユーザーが入力した値を加算、減算、乗算、除算、平方根の 5 つのプロセスを実行できる電卓を作成しようとしています。私がやったすべてのことですが、値を!= floatとintにしようとすると、入力値がfloatとintの場合にエラーが発生します... value == strを試した後、エラーが発生しました。しかし、それでもうまくいきません...誰か助けてください。

例えば

if value[0] != 'float' or value[0] != 'int' or value[1] != 'float' or value[1] != int':
    return 'the input value is not correct

上記の2つの両方を試しましたが、うまくいかないようです。プログラムのように、float、int、および string の間を読み取ることができません。

入力したら

calculator('+', 3, 4)

結果はエラーを言います.....

'print type(value[0], [1]) を持っている理由は、発生し続けるエラーのタイプを確認するためです。`

def calculator(sym, *t):
    value = tuple(t)
    n = len(value)

    print type(value[0])
    print type(value[1])

    if value[0] != 'float' or value[0] != 'int' or value[1] != 'float' or value[1] != int':
        return 'the input value is not correct.'
    else:
        if sym == '+':
            if len(value) != 2:
                return 'The input value is not correct.'
            else:
                return float(value[0] + value[1])
        elif sym == '-':
            if len(value) != 2:
                return 'The input value is not correct.'
            else:
                return float(value[0] - value[1])
        elif sym == '/':
            if len(value) != 2:
                return 'The input value is not correct.'
            elif value[1] == 0:
                return 'The input value is not correct.'
            else:
                return float(value[0] / value[1])
        elif sym == '*':
            if len(value) != 2:
                return 'The input value is not correct.'
            else:
                return float(value[0] * value[1])
        elif sym == 'sqrt':
            if len(value) != 1:
                return 'The input value is not correct.'
            elif value[0] < 0:
                return 'The input value is not correct.'
            else:
                return value[0] ** 0.5
        else:
            return 'The input value is not correct.'

`

4

2 に答える 2

4

isinstanceタイプを確認するために使用します。

>>> isinstance(1, int)
True
>>> isinstance(1, float)
False
>>> isinstance('str', int)
False

を使用numbers.Numberして、あらゆる種類の数値オブジェクトに一致させることができます。

>>> import numbers
>>> isinstance(2, numbers.Number)
True
>>> isinstance(2.0, numbers.Number)
True
于 2014-05-07T14:27:06.073 に答える
1

タイプではなく、値をstringと比較しようとしています。isinstance()代わりに関数を使用して型をテストします。型のタプルを受け入れます。

if not (isinstance(value[0], (int, float)) and isinstance(value[1], (int, float))):

ここでfloatandintは名前であり、文字列リテラルではないことに注意してください。それらは組み込み型オブジェクトを参照します。

于 2014-05-07T14:27:28.073 に答える