Python错误或错误

时间:2012-05-15 01:34:52

标签: python

我是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"

2 个答案:

答案 0 :(得分: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"

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

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

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

答案 1 :(得分:1)

例如,你不能像在Perl或PHP中那样在Python中的字符串中使用变量名。你喜欢这样:

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

评论以'#'开头。