how would i get an if statement to work like this?
Question:
Apologies for the bad title, I wasn’t quite sure how to sum up my issue.
I’m working on a "positivity generator" that gives the user positive affirmation based on their mood on a scale of 1-10. Here is the code and my question.
import random
A = "You're looking great today!"
B = "Remember, coding takes practice. You're doing great!"
C = "It's okay to take a break every once in awhile."
D = "You matter."
E = "Mental health is as important as physical health."
F = "Take a nap, you deserve it!"
G = "Good luck today!"
def main():
print("""Positivity Generator
---------------------""")
greet()
if int(input("Whats your mood on a scale of 1-10? ")) <= 3:
print(random.choice([B, D, E]))
elif input == _ in range(4, 7):
print(random.choice([C, F]))
else:
print(random.choice([A, G]))
def greet():
name = input("What is your name? ")
name = name.title()
print(f"Hello, {name}")
main()
How I would be able to get separate results with 3 different ranges (<=3, from 4 to 7, and >=8) using an if statement.
Answers:
Assign the value returned by the call to input()
to a variable, like mood
and then check the value of mood
in the expressions in the if
statement. Also, you’d want something like mood in range(4, 8)
since range()
is up-to-but-not-including and you don’t want too loop.
So:
import random
A = "You're looking great today!"
B = "Remember, coding takes practice. You're doing great!"
C = "It's okay to take a break every once in awhile."
D = "You matter."
E = "Mental health is as important as physical health."
F = "Take a nap, you deserve it!"
G = "Good luck today!"
def main():
# added a newline, since typing a literal newline doesn't work
print("""Positivity Generatorn---------------------""")
greet()
# assigning the result of the call to `input()` (and `int()`) to a variable
mood = int(input("Whats your mood on a scale of 1-10? "))
# comparing the value of the variable
if mood <= 3:
print(random.choice([B, D, E]))
# reusing the value in `mood`; 8 is not included in the `range()`
elif mood in range(4, 8):
print(random.choice([C, F]))
else:
print(random.choice([A, G]))
def greet():
name = input("What is your name? ")
name = name.title()
print(f"Hello, {name}")
# not required, but this ensures `main()` is only executed when the script is
# run directly, not when it is imported.
if __name__ == '__main__':
main()
Note that I changed the indentation to be 4 spaces instead of 2, which is default for Python – it’s best to follow conventions, which makes your code easier to read and maintain, and to combine it with other code.
There’s more improvements possible. For one, you don’t need all those variables (and the shouldn’t be named using capitals, because Python code typically reserves names with capitals for classes).
So:
# lists in dictionary, for various levels of motivation
motivation = {
0: [
"Remember, coding takes practice. You're doing great!",
"You matter.",
"Mental health is as important as physical health."
],
1: [
"It's okay to take a break every once in awhile.",
"Take a nap, you deserve it!"
],
2: [
"You're looking great today!",
"Good luck today!"
]
}
def main():
print("""Positivity Generatorn---------------------""")
greet()
mood = int(input("Whats your mood on a scale of 1-10? "))
# get the appropriate level based on mood
level = 0 if mood <= 3 else 1 if mood <= 7 else 2
# print a random motivation message for that level
print(random.choice(motivation[level]))
Apologies for the bad title, I wasn’t quite sure how to sum up my issue.
I’m working on a "positivity generator" that gives the user positive affirmation based on their mood on a scale of 1-10. Here is the code and my question.
import random
A = "You're looking great today!"
B = "Remember, coding takes practice. You're doing great!"
C = "It's okay to take a break every once in awhile."
D = "You matter."
E = "Mental health is as important as physical health."
F = "Take a nap, you deserve it!"
G = "Good luck today!"
def main():
print("""Positivity Generator
---------------------""")
greet()
if int(input("Whats your mood on a scale of 1-10? ")) <= 3:
print(random.choice([B, D, E]))
elif input == _ in range(4, 7):
print(random.choice([C, F]))
else:
print(random.choice([A, G]))
def greet():
name = input("What is your name? ")
name = name.title()
print(f"Hello, {name}")
main()
How I would be able to get separate results with 3 different ranges (<=3, from 4 to 7, and >=8) using an if statement.
Assign the value returned by the call to input()
to a variable, like mood
and then check the value of mood
in the expressions in the if
statement. Also, you’d want something like mood in range(4, 8)
since range()
is up-to-but-not-including and you don’t want too loop.
So:
import random
A = "You're looking great today!"
B = "Remember, coding takes practice. You're doing great!"
C = "It's okay to take a break every once in awhile."
D = "You matter."
E = "Mental health is as important as physical health."
F = "Take a nap, you deserve it!"
G = "Good luck today!"
def main():
# added a newline, since typing a literal newline doesn't work
print("""Positivity Generatorn---------------------""")
greet()
# assigning the result of the call to `input()` (and `int()`) to a variable
mood = int(input("Whats your mood on a scale of 1-10? "))
# comparing the value of the variable
if mood <= 3:
print(random.choice([B, D, E]))
# reusing the value in `mood`; 8 is not included in the `range()`
elif mood in range(4, 8):
print(random.choice([C, F]))
else:
print(random.choice([A, G]))
def greet():
name = input("What is your name? ")
name = name.title()
print(f"Hello, {name}")
# not required, but this ensures `main()` is only executed when the script is
# run directly, not when it is imported.
if __name__ == '__main__':
main()
Note that I changed the indentation to be 4 spaces instead of 2, which is default for Python – it’s best to follow conventions, which makes your code easier to read and maintain, and to combine it with other code.
There’s more improvements possible. For one, you don’t need all those variables (and the shouldn’t be named using capitals, because Python code typically reserves names with capitals for classes).
So:
# lists in dictionary, for various levels of motivation
motivation = {
0: [
"Remember, coding takes practice. You're doing great!",
"You matter.",
"Mental health is as important as physical health."
],
1: [
"It's okay to take a break every once in awhile.",
"Take a nap, you deserve it!"
],
2: [
"You're looking great today!",
"Good luck today!"
]
}
def main():
print("""Positivity Generatorn---------------------""")
greet()
mood = int(input("Whats your mood on a scale of 1-10? "))
# get the appropriate level based on mood
level = 0 if mood <= 3 else 1 if mood <= 7 else 2
# print a random motivation message for that level
print(random.choice(motivation[level]))