1 行にインデントを追加することにより、さらに 4 文字 (スペース) を追加して正しいものにすることができます。
def main():
largest = 0
smallest = 0
while (number != -99):
if number > largest:
largest = number
elif number < smallest:
smallest = number
number = int(input('Input a number, enter -99 to stop')) # Indent this line
あなたのコードを上に示したコードと比較できます。私がコメントした行に違いがあります。これは、前のスペース (インデント) の量です。
そうしないと、 がループ外で更新されるため、while
ループが終了しないためです。number
while
あなたの間違ったコード:
while (number != -99):
### The while loop starts here ###
if number > largest:
largest = number
elif number < smallest:
smallest = number
### The while loop ends here ###
number = int(input('Input a number, enter -99 to stop'))
したがって、新しい入力と比較するのではなくwhile
、同じ を比較し続けるため、ループは決して終了しません。number
この場合、プログラムはあなたが言ったように停止しませんが、いわゆる無限ループに陥ります
Python の「コード ブロック」はインデントによって定義されるため、インデントのレベルが同じコードは同じコード ブロックにあると見なされます。したがってnumber
、ループにアクセスするたびに変更するためには、 while ループinput
内に を配置する必要があります。
修正されたコード:
while (number != -99):
### The while loop starts here ###
if number > largest:
largest = number
elif number < smallest:
smallest = number
number = int(input('Input a number, enter -99 to stop'))
### The while loop ends here ###
更新(@MERM による):
showNumber
関数の変数を使用していないため、関数にも問題がありmain
ます。MERMが言ったように、showNumber
関数内で関数を呼び出すことができます:main
def main():
largest = 0
smallest = 0
while (number != -99):
if number > largest:
largest = number
elif number < smallest:
smallest = number
number = int(input('Input a number, enter -99 to stop'))
showNumber(smallest, largest)
そして励ましの言葉、あなたのコードは醜いものではありません。実際、それは適切で簡潔で、解決しようとしている問題を正確に解決します。「信じられないほどPythonが初めて」と言ったにもかかわらず、コードでロジックをどのようにレイアウトする必要があるかを理解しているようです。
がんばり続ける!