0

私はPythonに非常に慣れていないので、お詫び申し上げます。最終的にすべての構文エラーを取り除きましたが、何が間違っていたのかわかりません。

#Get the integers from the user
def main():
    largest = 0
    smallest = 0
    number = int(input('Input a number: '))
    while (number != -99):
        if number > largest:
             largest = number
        elif number < smallest:
             smallest = number
        number = int(input('Input a number, enter -99 to stop'))


# This module displays the smallest and largest integer entered.

def showNumber(smallest, largest):
    print('The smallest number is: ', smallest)
    print('The largest number is: ', largest)


#Call the main
main()
showNumber(smallest, largest)

これは、ユーザーが -99 を入力するまで数値を要求することになっています。次に、-99 を入力すると、最小および最大の整数が表示されるはずです。私は知っています、それはとても醜いです。単純なデータ型しか使用できません。

4

2 に答える 2

3

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ループが終了しないためです。numberwhile

あなたの間違ったコード:

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が初めて」と言ったにもかかわらず、コードでロジックをどのようにレイアウトする必要があるかを理解しているようです。

がんばり続ける!

于 2013-10-10T02:20:10.980 に答える
2

Python はインデントを区別します。

elif と数値は、if と同じインデントにある必要があります。また、メイン内から showNumber を呼び出す必要があります。それ以外の場合、最小値と最大値は未定義です (同じスコープではありません)。

def main():
    number = int(input('Input a number: '))
    largest = number
    smallest = number
    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)

それはそれの世話をする必要があります。

于 2013-10-10T02:23:05.763 に答える