7

11 歳の子供たちに言語の本質的な概念を教えたいので、私はまだ Python を学んでいます (私は教師として働いています)。基本的な作業を少し行ったので、彼らはプログラミングの本質とタスクをチャンクなどに分割することを理解しています. Python は、英国全土で新しいカリキュラムが導入される予定の言語であり、私は子供たちに悪い習慣を教えたくありません。以下は私が書いた小さなプログラムです。はい、それが悪いことは知っていますが、改善に関するアドバイスをいただければ幸いです。

私はまだ言語のチュートリアルを進めているので、優しくしてください! :o)

# This sets the condition of x for later use
x=0
# This is the main part of the program
def numtest():
    print ("I am the multiplication machine")
    print ("I can do amazing things!")
    c = input ("Give me a number, a really big number!")
    c=float(c)
    print ("The number", int(c), "multiplied by itself equals",(int(c*c)))
    print("I am Python 3. I am really cool at maths!")
    if (c*c)>10000:
        print ("Wow, you really did give me a big number!")
    else:
         print ("The number you gave me was a bit small though. I like bigger stuff than that!")

# This is the part of the program that causes it to run over and over again.
while x==0:
    numtest()
    again=input("Run again? y/n >>>")
    if x=="y":
        print("")
        numtest()
    else:
        print("Goodbye")
4

4 に答える 4

10

変数は必要ないようですx

while True:
    numtest()
    again = input("Run again? y/n >>>")
    if again == "y":       # test "again", not "x"
        print("")
    else:
        print("Goodbye")
        break              # This will exit the while loop
于 2013-03-25T19:31:29.483 に答える
4

あなたは良いスタイルを教えたいので:

  1. xグラフを作成する場合を除き、変数名を使用しないでください。命名規則とスタイルについては、PEP008 を参照してください。

  2. スペースに一貫性を持たせる:

    c = input ("Give me a number, a really big number!")
    
    c=float(c)
    

一貫していません。スタイルが良いのはどっち?

本当に無限ループが必要な場合は、次のようにします。

    True の間:
        numtest()

        again = input("もう一度実行しますか? y/n >>>")

        if again.lower().startswith("n"):
            print("さようなら")
            壊す

繰り返しになりますが、使用するのは悪いスタイルだと考える人もbreakいますが、あなたは同意しますか? ブレークが使用されないように、ループをどのように書き換えますか? たぶんあなたの学生のための演習?

于 2013-03-25T19:39:29.507 に答える
2

あなたはループを壊さなければなりません

あなたの時間はあるべきです

再び == 'y':

それによって

again = 'y'


def numtest():
    print ("I am the multiplication machine")
    print ("I can do amazing things!")
    c = input("Give me a number, a really big number!")
    c = float(c)
    print ("The number", int(c), "multiplied by itself equals", (int(c * c)))
    print("I am Python 3. I am really cool at maths!")
    if (c * c) > 10000:
        print ("Wow, you really did give me a big number!")
    else:
        print ("The number you gave me was a bit small though. I like bigger stuff than that!")

# This is the part of the program that causes it to run over and over again.
while again == 'y':
    numtest()
    again = input("Run again? y/n >>>")
    if again != "y":
        print("Goodbye")
于 2013-03-25T19:37:55.770 に答える
1

うまくいけば役に立つ解説:

コメントの代わりに docstring を使用して関数を説明します

def numtest():
    """Use a docstring. This is the main part of the program. Explain what a function is and why you want to use it. (Because it gives you scope and lets you simplify a complex set of procedures into a single operation.)"""

コードに一貫したスタイルを使用し、学生にもそれを理解してもらうようにしてください。

従うべきスタイルがよくわからない場合は、PEP-8を使用してください。(あなたの場合、異なる行の同じ操作で空白を扱う方法に違いがあります。)

print ("The number", int(c), "multiplied by itself equals",(int(c*c)))
print("I am Python 3. I am really cool at maths!")

ここで float を作成し、後で int を作成するのはなぜですか?

コンピューターが浮動小数点演算を整数演算とは異なる方法で処理する方法を教えると役立つ場合がありますが、ここでは実際には説明しません。

c = float(c)
print("The number", int(c), "multiplied by itself equals", (int(c*c)))

numtestループ内で 2 回呼び出します

代わりにこれを試してください:

again = "y"
while again == "y":
    numtest()
    again = input("Run again? y/n >>>")
    print("")

# Take this out of the loop.
print("Goodbye")
于 2013-03-25T19:39:11.890 に答える