Python 回顾:内置函数

Python 回顾:内置函数,python,function,python-2.7,python-3.x,Python,Function,Python 2.7,Python 3.x,这是一个由两部分组成的过程:首先,定义一个函数,距离为0,只有一个参数(选择您喜欢的任何参数名称) 其次,让该功能执行以下操作: 检查接收到的输入类型。 如果类型为int或float,则函数应返回函数输入的绝对值。 如果类型是任何其他类型,则函数应返回“非整数或浮点!” 代码: 有几件事: Python 2.7中的input()相当于eval(原始输入())。因此,如果您输入“hello”,它将引发一个namererror(除非有一个变量hello)。如果您使用的是Python 2.7,请使用r

这是一个由两部分组成的过程:首先,定义一个函数,距离为0,只有一个参数(选择您喜欢的任何参数名称)

其次,让该功能执行以下操作:

检查接收到的输入类型。 如果类型为int或float,则函数应返回函数输入的绝对值。 如果类型是任何其他类型,则函数应返回“非整数或浮点!”

代码:

有几件事:

Python 2.7中的
input()
相当于
eval(原始输入())
。因此,如果您输入“hello”,它将引发一个
namererror
(除非有一个变量hello)。如果您使用的是Python 2.7,请使用
raw\u input()
。但是,如果您使用的是Python3,那么请使用
input()
,因为
raw\u input()
在Python3中不存在(并且input与3中的raw\u input完全相同)

您还返回了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)

此外,对于检查类型,您应该使用。

这里您的代码有一些缺陷。当您通过
input()
获得用户输入时,它会对任何非数字输入抛出错误。使用
原始输入()。要检查接收到的输入类型,请使用
literal\u eval()


首先,正如其他人所建议的,使用
raw\u 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)

问题是..如果是字符串,则在beginning@dummy是的,我编辑了我的答案来解释(在顶部)我用你的函数替换了我的函数,但没有luck@dummy否,使用
raw\u input()
获取输入,而不是
input()
我想尝试使用…数字/浮点和字符串,因此如果有人输入非数字/非浮点,则会显示打印错误消息…不适用于strings@Dummy:这就是我使用的
literal\u eval()
的原因。原始输入同时接受数字和非数字输入。@Dummy:这意味着什么?打印变量返回n其他:打印“否!”返回n导入ast def距离(n):x=ast.literal\u评估(n)如果isinstance(x,(int,float)):var=abs(x)打印变量返回n其他:打印“否!”返回n变量=输入(“输入数字:”)用相同的代码打印var距离(var)。不要使用
input()
,而是使用
raw\u input(“输入数字”)
Haidro的答案很好…但是谢谢你的帮助,但是这对初学者来说不是有点困难吗?请为你的答案提供解释
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)
def distance_from_zero(n):
    if type(n) is int or type (n) is float:
       return abs(n)
       #return  abs(n)
    else:
        return "Nope"