Python Forum
help me simple code result min and max number
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
help me simple code result min and max number
#1
I have the following code:

largest = None
smallest = None
while True:
    num = input('enter a num ')
    if num == "done":
        break
    try:
        val = float(num)
    except:
        print("Invalid input")
        continue
    if largest is None or num > largest:
        print("setting largest to ", num)
        largest = num
        print("largest: ", largest)
        print('***********')
    if smallest is None or num < smallest:
        print("setting smallest to ", num)
        smallest = num
        print("smallest: ", smallest)
        print('***********')
print("Maximum is", largest)
print("Minimum is", smallest)
which produces the following output in the terminal

Output:
enter a num 7 setting largest to 7 largest: 7 *********** setting smallest to 7 smallest: 7 *********** enter a num 2 setting smallest to 2 smallest: 2 *********** enter a num bob Invalid input enter a num 10 setting smallest to 10 smallest: 10 *********** enter a num 4 enter a num done Maximum is 7 Minimum is 10
two questions:

1. If I remove the continue than the largest is set to bob? Why? Why do I even need the continue? I would never expect bob to be set to the largest as largest has already been set to 7 previously (it can not be None) and bob can not be greater than largest

if largest is None or num > largest:
7 is None || "bob" > 7
False || False
I do not understand how that statement can be truthy

2. How does the final smallest get set to 10 ? it was last set to 2
is 10 less than 2?

please explain these things

In my language the below image works exactly as expected so why isnt the above code working as expected?

   
Reply
#2
The main problem with the code is that it doesn't compare numbers. It compares number strings. It doesn't use "val" anywhere.

You can verify by doing this:
> python test.py
enter a num 5
setting largest to  5
largest:  5
***********
setting smallest to  5
smallest:  5
***********
enter a num 1234567
setting smallest to  1234567
smallest:  1234567
***********
Numerically 1234567 is greater than 5, but as a string, "5" > "1", so "5" > "1234567".

Since you are comparing strings, this makes perfect sense and is True (ord("b") > ord("7")).
if "7" is None || "bob" > "7":
If you compare "bob" and the number 7 you get a TypeError.
Reply
#3
(Nov-12-2022, 04:45 AM)abrahimusmaximus Wrote: Why do I even need the continue?
continue returns the execution at the start of the loop, i.e. if you get error, when trying to convert e.g. bob to float value it will ask for user input again till get valid input. Also, bare except is bad practice, be specific, in this case except TypeError:
Larz60+ likes this post
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Help with simple code JacobSkinner 1 336 Mar-18-2024, 08:08 PM
Last Post: deanhystad
  I have a code which is very simple but still I cannot detect what's wrong with it max22 1 491 Nov-07-2023, 04:32 PM
Last Post: snippsat
  Simple encoding code ebolisa 3 1,462 Jun-18-2022, 10:59 AM
Last Post: deanhystad
  Can a program execute code in iPython shell and get result? deanhystad 3 1,759 Jun-17-2022, 03:45 AM
Last Post: Larz60+
  code running for more than an hour now, yet didn't get any result, what should I do? aiden 2 1,515 Apr-06-2022, 03:41 PM
Last Post: Gribouillis
  How would you (as an python expert) make this code more efficient/simple coder_sw99 3 1,818 Feb-21-2022, 10:52 AM
Last Post: Gribouillis
  Simple code question about lambda and tuples JasPyt 7 3,341 Oct-04-2021, 05:18 PM
Last Post: snippsat
  My simple code don't works !! Nabi666 1 1,620 Sep-06-2021, 12:10 PM
Last Post: jefsummers
Sad SyntaxError: from simple python example file from mind-monitor code (muse 2) warmcupoftea 4 2,854 Jul-16-2021, 02:51 PM
Last Post: warmcupoftea
  Plotting sum of data files using simple code Laplace12 3 3,062 Jun-16-2021, 02:06 PM
Last Post: BashBedlam

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020