1

これは 2 つの部分で構成されています。最初に、関数 distance_from_zero を 1 つのパラメーターで定義します (任意のパラメーター名を選択してください)。

次に、その関数に次のことをさせます。

受け取った入力のタイプを確認してください。型が int または float の場合、関数は関数入力の絶対値を返す必要があります。型が他の型の場合、関数は「整数でも浮動小数点数でもありません!」を返す必要があります。

コード:

def distance_from_zero(n):
print type(n)
if type(n) == int or type(n) == float:
    var = abs(n)
    print var
    return n
else:
    print "no!"
    return n

var = input("Enter number:")
print var
distance_from_zero(var)
4

4 に答える 4

1

ここで、コードにいくつかの欠陥があります。を介してユーザー入力を取得すると、input()数値以外の入力に対してエラーがスローされます。使用してraw_input()ください。受信した入力のタイプを確認するには、次を使用します。literal_eval()

import ast
def distance_from_zero(n):
    try:        
         x = ast.literal_eval(n)
         if isinstance(x, (int,float)):
             var = abs(x)
             print type(var)
             return var
    except:
         print "No!"
于 2013-06-27T06:32:18.590 に答える
1

まず、他の人が提案したように、を使用しますraw_input()

int次に、それをまたはに変換してみることができますfloat。これらの両方が失敗した場合、番号はありません。「元の」タイプを保持したい場合は、これを使用できます。

def distance_from_zero(n):
    try:
        n = int(n)
    except ValueError:
        try:
            n = float(n)
        except ValueError:
            print "Not a number!"
            n = float("NaN")
    return abs(n)

1入力が に変換されても構わない場合は1.0、関数を単純化できます。

def distance_from_zero(n):
    try:
        return abs(float(n))
    except ValueError:
        print "Not a number!"
        return float("NaN")  # or remove this line to return None

どちらの場合も、次のように関数を呼び出します。

var = raw_input("Enter number: ")
print distance_from_zero(var)
于 2013-06-27T06:57:35.177 に答える
1

いくつかのこと:

input()Python 2.7 では と同等eval(raw_input())です。したがって、「hello」と入力すると、NameError(変数 hello がない限り) が発生します。Python 2.7 を使用している場合は、raw_input(). ただし、Python 3 を使用している場合は、Python 3 には存在しないinput()ため、を使用します (入力は 3 の raw_input とまったく同じです)。raw_input()

varまた、絶対値であるn と not を返しました。

def distance_from_zero(n):
    try:
        return abs(float(n))
    except ValueError:
        return "That is not an integer or float!"

var = raw_input("Enter number:")
print var
distance_from_zero(var)

また、タイプを確認するには、を使用する必要がありますisinstance()

于 2013-06-27T06:30:54.973 に答える