我的程序在询问一个数字后停止工作

时间:2013-10-10 02:16:54

标签: python

我是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时它应该显示最小和最大的整数。 我知道,这太丑了。我只能使用简单的数据类型。

2 个答案:

答案 0 :(得分: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更改,您需要将input 置于 while循环中:

更正了代码:

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函数中的变量。您可以在showNumber函数中调用main函数,就像MERM所说:

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来说是一个非常新的”。

坚持下去!

答案 1 :(得分: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)

应该照顾它。