0

我是 Python 的初学者,我已经编写了这个简单的代码,但是有一些我无法解决的错误:(

请问有人可以帮我吗?

//initialization
str = None
var = None

def setvar(val):
""" Sets the global variable "var" to the value in 'val' """
if val:
 print "setting variable 'var' to '$val'"  // we want to print the value of 'val'
else:
 print "un-setting variable 'var'"

 var = val
 return

if __name__ == 'main':
  try:
    setvar("  hello world!  ") // use this function to set the 'var' variable
    var.strip() // we want the leading and trailing spaces removed
    print str(var)
  except:
    print "something went wrong"
4

2 回答 2

4

您的代码示例存在一些问题。

首先,假设您在提出问题时忠实地保留了缩进,那就错了。的主体setvar应该从 . 缩进def。请确保您遵循 PEP 指南并为每个缩进级别使用四个空格。

其次,Python 中的注释标记#不是//.

接下来,如果要影响函数中的全局变量,则需要将其标记为。

第四,var.strip() 返回新值,它不会就地操作。

此外,在您运行此脚本的情况下,的值__name__将是__main__而不是,。main

最后,您创建了str一个空变量,因此您不能像调用函数一样调用它。

以下工作正常:

# initialization
var = None

def setvar(val):
    """ Sets the global variable "var" to the value in 'val' """
    global var
    if val:
        print "setting 'var' to '$val'" #  we want to print the value of 'val'
    else:
        print "un-setting 'var'"

    var = val
    return

if __name__ == '__main__':
    try:
        setvar("  hello world!  ") #  use this function to set the 'var' variable
        var = var.strip() #  we want the leading and trailing spaces removed
        print str(var)
    except:
        print "something went wrong"

另一件事可能是也可能不是问题。如果要打印第一条语句中的,请不要使用. 相反,你可以有类似的东西:valprint$val

print "setting variable 'var' to '%s'"%(val)

而且,是的,我知道你不需要在单个值周围加上括号,这只是我的编码风格,而且我必须记住的少一件事:-)

于 2012-05-15T01:38:24.737 回答
1

例如,您不能像在 Perl 或 PHP 中那样在 Python 中的字符串中使用变量名。您可以这样做:

print ("setting variable 'var' to '%s'" % val)  # we want to print the value of 'val'

评论以“#”开头。

于 2012-05-15T01:44:56.877 回答