-1

重複の可能性:
Python 3 での印刷時の構文エラー

Python がインタープリター言語の神であることはわかっています... その単純さ、冗長性の欠如、何とか何とか。しかし、私は C、C++、Java、Javascript、および Php に慣れすぎているため、これが煩わしいことは認めざるを得ません。これが私のコードです:

#!/usr/bin/python3.1
def shit(texture, weight):
    if textura is "green":
        texturaTxt = "Shit is green"
    elif textura is "blue":
        texturaTxt = "Shit is blue"
    elif textura is "purple":
        texturaTxt = "Shit is purple"
    else:
        print "Incorrect color"
        break
    if weight < 20:
        pesoTxt = " and weights so few"
    elif weight >= 20 and peso <=50:
        pesoTxt = " and weights mid"
    elif weight > 50:
        pesoTxt = " and weights a damn lot"
    else:
        print "Incorrect weight"
    return texturaTxt + pesoTxt

c = input("Introduce crappy color: ")
e = input("Introduce stupid weight: ")
r = shit(c, w)
print r

私はPythonを学ぼうとしていますが、達成しようとしていたのは次のとおりです。

...
function shit(texture, weight) {
    string textureTxt = "Shit is ", pesoTxt = " and weights ";
    switch(texture) {
        case "green": textureTxt .= "green as an applee"; break;
        case "blue": textureTxt .= "blue as the sky"; break;
        case "purple": textureTxt .= "purple as Barny"; break;
        default: cout<<"Incorrect texture, try again later" <<endl; exit;
    }
    //etc
}
string color = "";
int weight = 0;
cout<<"Introduce color: ";
cin>>color;
//etc 
cout<<shit(color, weight);
...

しかし、私はあきらめます、私はそれを機能させることができません、それは私のあらゆる種類のエラーをスローします. そこにC++またはphpまたはCからPythonへのコンバーターがあることを願っています。

ご協力いただきありがとうございます

4

1 に答える 1

1

print xPython3 は、( Python 2.xのように) print キーワードに続く引数を持つ特別な形式としての print をサポートしなくなりました。代わりprintに関数になり、 in: のような引数リストが必要になります print(x)http://docs.python.org/release/3.0.1/whatsnew/3.0.htmlの「Print is a function」を参照してください。

さらに、このbreakステートメントはループの外では使用できません。switchCステートメント以外は、ifbreak をサポートしていません。if ステートメントにはフォールスルー ロジックがないため、必須ではありません。関数の実行を停止して呼び出し元に戻るには、 を使用しますreturn

演算子の代わりにis、等値演算子を使用します==isオブジェクトが同一かどうかをテストします。これは、等しいかどうかよりも厳密なテストです。詳細については、こちらをご覧ください

さらに、重みを文字列として取得しています。関数 を使用して、文字列を整数に変換し、他の整数値と比較することができますint(weight)

また、他にもいくつかの小さなエラーがあります。

  • 関数呼び出しでe未定義の変数名を使用しようとしているときに、重みのユーザー入力を割り当てていますw
  • 関数の最初のパラメーターが呼び出されますが、関数本体でtexture使用しています。textura
  • 1 つのインスタンスpesoの代わりに使用していますweight

以下は、これらのエラーを取り除いた (不快感の少ない) 書き直しです。

def stuff(color, weight):

    color_txt = "Your stuff is "
    if color == "green":
        color_txt += "green as an apple"
    elif color == "blue":
        color_txt += "blue as the sky"
    elif color == "purple":
        color_txt += "purple as an eggplant"
    else:
        print("Invalid color!")
        return

    w = 0
    # converting a string to an integer might
    # throw an exception if the input is invalid
    try:
        w = int(weight)
    except ValueError:
        print("Invalid weight!")
        return

    weight_txt = ""
    if w<20:
        weight_txt = " and weighs so few"
    elif 20 <= w <= 50:
        weight_txt = " and weighs mid"
    elif w > 50:
        weight_txt = " and weighs a lot"
    else:
        print("Invalid weight!")

    return color_txt + weight_txt

c = input("Input color: ")
w = input("Input weight: ")
r = stuff(c, w)
print(r)
于 2012-10-20T13:30:30.023 に答える