2013-06-27 38 views
1

这是一个双人单元:首先,使用一个参数定义一个函数,distance_from_zero(选择您喜欢的任何参数名称)。评论:内置函数

其次,有一个功能做到以下几点:

检查它接收输入的类型。 如果类型为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) 
+0

doenot工作串 – dummy

回答

1

首先,作为其他人所说,使用raw_input()

然后,您可以尝试将其转换为intfloat。如果这两个都失败了,你就没有号码。如果你想保持“原生态”的类型,您可以使用此:

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) 
+0

但是这对初学者来说难道不是这么困难吗? –

1

几件事情:

input()在Python 2.7,相当于eval(raw_input())。所以,如果你输入“你好”,它会提高NameError(除非有一个变量你好)。如果您正在使用Python 2.7,请使用raw_input()。但是,如果你正在使用python 3,然后用input(),因为raw_input()不会在Python 3存在(并输入是完全相同的raw_input为3)

也返回n和不var,绝对超值。

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()

+0

问题是..如果它是字符串,它在开始时会给出错误 – dummy

+0

@dummy是的,我编辑了我的答案来解释(顶部) – TerryA

+0

我用你的代替了我的功能,但没有运气 – dummy

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!" 
+0

给字符串作为输入...它会抛出一个错误 – dummy

+0

然后你不能传递数值... – dummy

+0

@Dummy:那是我有什么用'literal_eval()'来表示。原始输入接受数字和非数字输入。 –

0
def distance_from_zero(n): 
    if type(n) is int or type (n) is float: 
     return abs(n) 
     #return abs(n) 
    else: 
     return "Nope" 
+1

请为您的答案提供解释 – SilentMonk