Lowest price ever! Learn Generative AI for 48% less!
Get my discount+ 1
No matter my input it still picks same option.
print ('Welcome to Hangman!') print ('Guess 10 letters!') inp = False if inp == False: inp = input() if inp == 'S' or 's': print ('Letter correct.\ Word: S___ _____.') inp = input() if inp == 'o' or 'O': #No matter what i choose it still picks choice 'o' print ('Letter correct.\ Word: So_o _____.') elif inp == 'l' or 'L': print ('Letter correct.\ Word: S_l_ L____.') elif inp == 'e' or 'E': print ('Letter correct.\ Word: S___ _e___.') elif inp == 'a' or 'A': print ('Letter correct.\ Word: S___ __a__.') elif inp == 'r' or 'R': print ('Letter correct.\ Word: S___ ___r_.') elif inp == 'n' or 'N': print ('Letter correct.\ Word: S___ ____n.') else: print ('Wrong.\ -----\ | |\ |\ |\ |\ |\ |\ |\ |\ --------')
6 Answers
+ 5
This can be tricky. The concept of False is: 'the absence of value'. By inference then, anything of value is effectively True (called 'Truthy' and 'Falsey'). Then...most languages short-circuit to the first value that satisfies the conditionals.
For 'or' it is the first Truthy. For 'and' is the first Falsey. The language then reports which one satisfied the entire condition. Examples:
print(True if 'o' else False)
# True (Truthy)
print(True if '' else False)
# False (empty strings have no value)
a=None; b='o'; c='O'
print(a or b or c)
# o (b is Truthy)
print(a and b and c)
# None (a is Falsey)
#inp = input()
inp='a'
if inp=='o' or 'O':
print(inp=='o')
# False
print(inp=='o' or 'O')
# O (see next line)
print((inp=='o') or 'O')
# ...(False) or Truthy
# O (Truthy)
print(inp=='o' and 'O')
# ...False and Truthy
# False
The 'if' runs because 'O' is truthy.
* (so...you are only checking 'inp' once) *
+ 5
It should be if inp == 'o' or inp == 'O':
+ 5
@Maid Rondic : I didn't provide an answer this time because the original poster didn't seem to ask for one, but... ∆•Martin•∆'s answer works.
You can also just do one of these (so letter case does not matter):
if inp.lower() == 'o':
...stuff
if inp.upper()=='O':
...same stuff
+ 1
i put \ because i was printing an extra line o:
0
can't tell if it is because you rewrote it or your copy failed, but the end of each print should be ') , not \
0
The point is if you keep one correct answer it will work, i still do not realise how to make two correct