That doesn't even works because input() is the same as eval(raw_input()). So you'll get a NameError exception.
I think you know that. Perhaps you mean raw_input() instead of input(). In that case the answer is yes, it can be more 'efficient' because the if-then-else clause always breaks the while loop. I think you are looking for is a switch statement, which Python don't have. You can use the following structure to emulate a switch statement: def function1(): if raw_input() in option1: print('he tumbles over you') else: print('he stabs you') def function2(): if raw_input() in option2: print('you trip him up') else: print('he stabs you') def default(): print 'DEFAULT' switch = { option1: function1, option2: function2 } switch.get(randomizer, default)() Note that switch is a dictionary and you can use it without creating a variable, for example: { option1: function1, option2: function2 }.get(randomizer, default)() > Date: Mon, 3 Jun 2013 20:39:28 -0700 > Subject: Beginner question > From: eschneide...@comcast.net > To: python-list@python.org > > Is there a more efficient way of doing this? Any help is gratly appreciated. > > > import random > def partdeux(): > print('''A man lunges at you with a knife! > Do you DUCK or PARRY?''') > option1=('duck') > option2=('parry') > optionsindex=[option1, option2] > randomizer=random.choice(optionsindex) > while randomizer==option1: > if input() in option1: > print('he tumbles over you') > break > else: > print('he stabs you') > break > while randomizer==option2: > if input() in option2: > print('you trip him up') > break > else: > print('he stabs you') > break > partdeux() > -- > http://mail.python.org/mailman/listinfo/python-list
-- http://mail.python.org/mailman/listinfo/python-list