Search code examples
pythonnumbersvariable-assignment

Coursera Python: Programming for everybody assignment 5.2


I have been taking Coursera's course, Programming for Everybody with Python. But one of the assignment 5.2 on week 7 got my attention.

The objective is to make the user enter some numbers and enter done, when he entered all the numbers he wanted. After that, the output should be the biggest number and smallest number he entered.

Here is the problem. If I enter a negative number it is not displayed. Let's say I enter: 32, 55,10, -2 76. The output should be 76 and -2. But what really happens is that 76 and 10 are printed out.

Do you guys have any idea why this happens?

Here is the code.

largest = None
smallest = None
while True:
    try:
        num = input("Enter a number: ")
        if num == "done":
            break
        print (num)

        num = int(num)

        for number in range(num):

            if largest is None or largest < num:
                largest = num
                continue
            elif smallest is None or smallest > num:
                smallest = num       
    except ValueError:
        print("Please, enter only numbers.")

print ("Maximum", largest)
print ("Minimum", smallest)

Solution

  • Well,the issue is that why are you iterating over an int if it isnt a list? You can rather do it with out a loop:

    largest = None
    smallest = None
    while True:
        try:
            num = input("Enter a number: ")
            if num == "done":
                break
            print (num)
            num = int(num)
            if largest is None or largest < num:
                largest = num
            elif smallest is None or smallest > num:
                 smallest = num
        except ValueError:
            print("Please, enter only numbers.")
    
    print ("Maximum", largest)
    print ("Minimum", smallest)
    

    output:

    Enter a number: 12
    12
    Enter a number: 56
    56
    Enter a number: 34
    34
    Enter a number: -2
    -2
    Enter a number: 17
    17
    Enter a number: done
    Maximum 56
    Minimum -2