2

我在编程和通过LPTHW工作方面相对较新。我想构建一个函数来检查 raw_input() 是否是数字,然后返回 float(input) 或者如果不是数字则仅返回原始输入。

我已经确定 input.isdigit() 是一个可接受的函数,但现在我正在努力构建在 if 语句编译后实际返回变量的函数。我相信使用 global 功能会对我有所帮助,但是在阅读了一些帖子之后,听起来 global 并不是非常“有效”的工具。

这就是我迄今为止所拥有的。

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)

非常感谢您对此的任何帮助。

4

2 回答 2

2

global了,这里不需要它;仅当您想在不同的函数调用之间共享状态时才需要全局。由于 input 的值对于调用来说总是新的,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)
于 2013-08-17T05:23:44.010 回答
1

您的代码中有两个输入。一个是参数,另一个是全局变量。编译器不知道您指的是哪一个。也许更改其中之一的名称?

input = input

这没有任何意义。你是想说输入保持不变吗?然后只需删除 else 部分!而且你不需要全局变量。可以直接返回值!

于 2013-08-17T05:21:33.227 回答