How do I make a variable detect if it is greater than or less than another one?

2024/10/6 7:32:25

I am currently learning Python, and I decided to build a small "Guess the Number" type of game. I am using the random feature, and trying to make it so it will detect if the user's input is equal the the random number. This is my code:

irand = randrange(1, 10)
while True:number = input ("Pick a number 1-10: ")if number < irand:print ("    ")print ("That's too high, try again.")if number > irand:print ("    ")print ("That's too low, try again.")if number == irand:print ("    ")print ("You got it right! You won!")break

I am not exactly sure how to make it detect if number is equal to, less than or greater than irand. Any help? Thank you! :)

Answer

Your code to check "equal to, less than, or greater than" is correct, but you've got a problem earlier in the code.

In Python (3.0 and later), input returns a string. So, you're comparing number, a string, to irand, a number. Some languages might convert one way or the other automatically, but that can be confusing,*, so Python refuses to do so, and instead raises a TypeError: unorderable types: int() < str().

The solution is to parse the input into a number, like this:

number = int(number)

This will raise a ValueError if the user gives you invalid input, like the letter c instead of a number from 1 to 10. If you want to deal with that more nicely, you use a try statement.

As a side note, you probably want elif instead of if. If you've got everything right, this doesn't make any difference, but if you've made a mistake, it helps catch the mistake.

So, putting it all together:

while True:number = input("Pick a number 1-10: ")try:number = int(number)except ValueError:print(number, 'is not a number, try again.')continueif number < irand:print("    ")print("That's too high, try again.")elif number > irand:print("    ")print("That's too low, try again.")else:print("    ")print("You got it right! You won!")break

(Notice that I used continue in the except clause, so we skip over the rest of the loop and don't have to worry about number not being a number anymore. We could also move the whole loop into an else cause on the try, or add an isinstance check on each if, etc., but that gets a bit clumsy.)


* Consider comparing the string "2" to the number 10. A language that converts the string to a number will say that 2 < 10; a language that converts the number to a string will say that "10" < "2". Neither one is "right" or "wrong", but both are surprising half the time…

https://en.xdnf.cn/q/119980.html

Related Q&A

Python Regular Expression from File

I want to extract lines following some sequence from a file. E.g. a file contains many lines and I want line in sequencejourney (a,b) from station south chennai to station punjab chandigarh journey (c,…

Changing the words keeping its meaning intact [closed]

Its difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying thi…

How to create index for a SQLite3 database using SQLAlchemy?

I have multiple SQLite3 databases for which the models are not available. def index_db(name, tempdb):print(f{name.ljust(padding)} Indexing file: {tempdb})if tempdb.endswith(primary.sqlite):conn = sqlit…

Implementing ast.literal_eval on a numpy array

With the following expression, you can convert a string to a python dict.>>> import ast >>> a = ast.literal_eval("{muffin : lolz, foo : kitty}") >>> a {muffin: lolz…

Best way to make argument parser accept absolute number and percentage?

I am trying to write a Nagios style check to use with Nagios. I have working script that takes in something like -w 15 -c 10 and interprets that as "Warning at 15%, Critical at 10%". But I ju…

Python calculating prime numbers

I have to define a function called is_prime that takes a number x as input, then for each number n from 2 to x - 1, test if x is evenly divisible by n. If it is, return False. If none of them are, then…

Why am I getting a column does not exist error when it does exist? I am modifying the Flask tutorial

I have a column named ticker_symbol, but I am getting a error when I run the error that there is no such column. Here is my auth.py code so far. It is similar to the Flask tutorial code. I get my get_d…

Update Key Value In Python In JSON File

How do I change a value in a json file with python? I want to search and find "class": "DepictionScreenshotsView" and replace it with "class": ""JSON File:{&quo…

Getting UnboundLocalError: local variable age referenced before assignment error

Ive written a simple script with TKinter and SQLAlchemy, where an sqlite .db is created, saving Employee information such as name, age, address, etc, etc.I realized that if a user puts a string in the …

Cannot run python script [duplicate]

This question already has answers here:What does "SyntaxError: Missing parentheses in call to print" mean in Python?(11 answers)Closed 9 years ago.I am trying to run this python script:https…