+ 1
I am working on a very simple text monty python 'game' and am having g issues with else/if
So basically I have choice = input("pick a, b, or c") if choice == ('a'): print ("the text I have written in actual code") elif choice == ('b'): print ("different text in code") elif choice == ('c'): print ("another text") else: print ("snarky comment about the user needing to pick a, b, or c") However, no matter what I input it just prints out the result for inputting ('a'). I am at the point of banging my head into my keyboard. Help me Sol-o-wan Kenobi, you're my only hope! If anyone needs to see a screenshot I can so that but apparently not in solo learn.
22 Réponses
+ 5
Aah okay, it's clear now with the real code in view
First, drop these
a = ('A' or 'a')
b = ('B' or 'b')
c =('C' or 'c')
And for the conditionals, use `in` operator for checking inputs
if choice in 'Aa':
# 'A' or 'a' was chosen
elif choice in 'Bb':
# 'B' or 'b' was chosen
Head or keyboard? hmmm what a tough choice LOL
+ 3
Sequoia I see that after your if condition you left out the colon as well as after the elif conditions.
the colon is like a code block and the structure of this is similar to a switch in other languages ..
if (condition):
elif (condition):
elif (condition):
else:
choice = input("pick a, b, or c")
if choice == ('a'):
print ("the text I have written in actual code")
elif choice == ('b'):
print ("different text in code")
elif choice == ('c'):
print ("another text")
else:
print ("snarky comment about the user needing to pick a, b, or c")
+ 3
Oh our good friends here had guided you well ...
Stop banging your head onto the keyboard already, you'll have to get a new one tomorrow if you don't 8-)
+ 3
Sequoia BTW you don't really need those parentheses in the conditions, you can just write:
```
if choice == 'a':
```
In fact those parentheses just confuse.
+ 2
It is working.
https://code.sololearn.com/c8O5EjD5iGET/?ref=app
+ 2
Евгений Phil is making a Monty Python joke, which is the same show/ movie that I am working with, that is why and yes it's supposed to be a trick, regardless of the weight, she's a witch, burn her. For context watch the film "Money Python and the search for the Holy Grail. It's a very specific type of humor so it may not be your thing lol.
Also, Phil Shary what is the air speed velocity of a laden Swallow?
+ 1
# Hi, Sequoia !
# The code working as expected. Just do som small adjustments, as add colons in the if statments etc:
choice = input("pick a, b, or c: ")
print(choice)
print()
if choice == ('a'):
print("the text I have written in actual code")
elif choice == ('b'):
print ("different text in code")
elif choice == ('c'):
print("another text")
else:
print("snarky comment about the user needing to pick a, b, or c")
+ 1
Okay that was me not paying close enough attention to what i typed in here, I didn't forget the : in the actual code so that is not the issue. I just double checked. I did not include
print(choice)
print()
But after adding it, I do not see any change. It is still printing as if the user input 'A' regardless of what the user inputs...
+ 1
Ipang a new head or keyboard? ;) I may need both haha.
+ 1
I figured out the issue. I was using an or statement that I didn't put in here not thinking it was the problem (sheepish smile). Heh. I am still not sure why 'or' broke the program but it did.
I had ('a') or ('A') and the same for b and for c incase the user inputted a capital letter instead of a lowercase letter but taking away that option fixed the code!
Thanks everyone for your help!
+ 1
duck_weight_min = 760
duck_weight_min = 1600
input (weight)
if weight >= ('duck_weight_min'): or
if weight <= ('duck_weight_max')
print ("She's a witch. Burn her!")
+ 1
Sequoia OK I see now. I wouldn't guess that without an explanation. 👍
+ 1
Try this method
choice = input()
if choice == ("a"):
print ("the text I have written in actual code")
elif choice == ("b"):
print ("different text in code")
elif choice == ("c"):
print ("another text")
else:
print ("snarky comment about the user needing to pick a, b, or c")
+ 1
Sequoia When you need help with some code, never make changes to it, otherwise people will be dealing with some _other_ code. Even a small change can result in a completely different behavior. Or if you make any changes make sure first that the behavior isn't affected.
Also use Code Playground to share the code you are referring to in questions/answers, not pictures and plain text inside a question. It is very easy to use and very helpful for others to inspect/experiment with your code. The easier the way for others to help you the more likely you'll get a helpful response.
+ 1
Sequoia
As for the initial problem, the cause is the operation priority in the condition. The condition is evaluated as:
(choice == 'a') or 'A'
While the left part of "or" can be false, the right part is always True since non-empty strings ('A') are truthy values. So the condition always evaluates to True. Actually it evaluates to 'A' which is True in these conditions or just to True (self example below for explanation). So the first condition in the "if" statement always holds true.
```
choice = 'a'
cond = (choice == 'a' or 'A')
print(cond, bool(cond))
choice = 'b'
cond = (choice == 'a' or 'A')
print(cond, bool(cond))
```
This will print
```
True True
A True
```
https://code.sololearn.com/c9v3F9br8AE6/?ref=app
+ 1
Abdul rahmon "choice.isalpha()" is redundant here.
0
Here is a link to an image of the ACTUAL code on my computer if anyone would like to see it. That way I do not miss something like the : when positing it on my phone heh.
https://ibb.co/mSD9X6c
0
# Created by medokan
choice = input("pick a, b, or c")
for x in choice :
if x == ('a'):
print ("'a' the text I have written in actual code")
elif x == ('b'):
print ("'b' different text in code")
elif x == ('c'):
print ("'c' another text")
else:
print ("snarky comment about the user needing to pick a, b, or c")