我在编程和LPTHW工作方面相对较新。我想构建一个函数,它将检查raw_input()是否为数字,然后返回float(输入)或简单地返回原始输入(如果不是数字)。
我已经确定input.isdigit()是一个可以接受的函数,但是现在我正在努力构建在if语句编译后实际返回变量的函数。我相信使用全局函数会对我有所帮助,但在阅读了一些帖子之后,听起来并不像全局是非常“有效”的工具。
这就是我到目前为止所拥有的。
def Number_Check(input):
global input
if input.isdigit():
input = float(input)
else:
input = input
在shell中运行它会给我一个错误:
SyntaxError: name 'input' is local and global (ex36.py, line 19)
非常感谢任何帮助。
答案 0 :(得分:2)
忘记global
,你不需要它;当您想要在不同函数调用之间共享状态时,有时只需要global。由于输入值始终是调用的新内容,global
绝对是您应该使用的内容。请尝试以下
def number_check(input):
"""
if the given input can be converted to a float, return
the float, otherwise return the input as a string unchanged.
"""
try:
return float(input)
except ValueError:
return input
# and use like this:
string = raw_input()
number_or_string = number_check(input)
答案 1 :(得分:1)
您的代码中有两个输入。一个是参数,另一个是全局变量。编译器不知道哪一个是你所指的那个。也许改变其中一个的名字?
input = input
这没有任何意义。你想说输入保持不变吗?然后简单地删除其他部分!而且你不需要全局变量。您可以直接返回值!