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

您可以添加额外的 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 非常陌生”。

保持!

于 2013-10-10T02:20:10.980 回答
2

Python 是缩进敏感的。

elif 和 number 需要与 if 有相同的缩进。此外,您需要从 main 内部调用 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 回答