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 ガイドラインに従っていることを確認し、各インデント レベルに 4 つのスペースを使用してください。

次に、Python のコメント マーカー#//.

次に、関数内のグローバル変数に影響を与えたい場合は、そのようにマークする必要があります。

4 番目に、新しい値をvar.strip() 返します。インプレースで動作しません。

また、このスクリプトを実行している状況では、の値はではなく__name__になります。__main__main

最後に、strnull 変数を作成したため、関数のように呼び出すことはできません。

以下はうまくいきます:

# 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"

問題になる場合とそうでない場合があるもう1つのこと。その最初のステートメントで のを出力したい場合は、 を使用しません。代わりに、次のようなものを使用できます。valprint$val

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

そして、はい、単一の値を括弧で囲む必要がないことはわかっています。これは私のコーディング スタイルであり、覚えておかなければならないことが 1 つ少なくなります :-)

于 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 に答える