On 06/03/2013 08:39 PM, eschneide...@comcast.net wrote:
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()


Yes, you are making this much more complicated than necessary. It seems that what you are trying to do is input the option, then randomly print a success or failure message for that option. I suspect you didn't plan it, but it also prints the "stab" message for invalid entries.

Like any program, it can be approached in many different ways.  Here is one 
possibility.
(Just the function def, add the import and function call as well. Also I am not adding any comments. See if you can follow the logic here yourself.)

----------
def partdeux():
    print('A man lunges at you with a knife!')
    option = input('Do you DUCK or PARRY?  ').lower()
    success = random.randint(0, 1)
    if success:
        if option == 'duck':
            print('He tumbles over you')
            return
        if option == 'parry':
            print('You trip him up')
            return
    print('He stabs you')
------------

BTW, ignore the response from Carlos. I can see from the print() functions in your original that you're using Python 3. His answer is only valid for Python 2.

     -=- Larry -=-

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to