On 7/30/2010 10:49 PM, Jason MacFiggen wrote:
what can I do instead of writing print so many times?
import random
    my_hp = 50
    mo_hp = 50
    my_dmg = random.randrange(1, 20)
    mo_dmg = random.randrange(1, 20)
    while True:
        if mo_hp < 0:
            print "The Lich King has been slain!"
        elif my_hp < 0:
            print "You have been slain by the Lich King!"
        if mo_hp <= 0:
            break
        elif my_hp <= 0:
            break
        else:
            print "Menu Selections: "
            print "1 - Attack"
            print "2 - Defend"
            print
            choice = input ("Enter your selection. ")
            choice = float(choice)
            print
        if choice == 1:
            mo_hp = mo_hp - my_dmg
            print "The Lich King is at ", mo_hp, "Hit Points"
            print "You did ", my_dmg, "damage!"
            print
            my_hp = my_hp - mo_dmg
            print "I was attacked by the lk for ", mo_dmg," damage!"
            print "My Hit Points are ", my_hp
            print
        elif choice == 2:
            mo_hp = mo_hp - my_dmg / 2
            print "The Lich King is at", mo_hp, "Hit Points"
            print "you did ", my_dmg / 2, "damage!"
            print
            my_hp = my_hp - mo_dmg
            print "I was attacked by the lk for ", mo_dmg," damage!"
            print "My Hit Points are ", my_hp
            print

Most of the statements in each choice block are identical. Factor them out, giving:

        if choice == 1:
            mo_hp = mo_hp - my_dmg
            print "you did ", my_dmg /, "damage!"
        elif choice == 2:
            mo_hp = mo_hp - my_dmg / 2
            print "you did ", my_dmg / 2, "damage!"
        print "The Lich King is at", mo_hp, "Hit Points"
        my_hp = my_hp - mo_dmg
        print "You did ", my_dmg, "damage!"
        print
        print "I was attacked by the lk for ", mo_dmg," damage!"
        print "My Hit Points are ", my_hp
        print

You could (better) move these statements into a function, passing 1 or 2 as the divisor for my_dmg and returning the updated values for my_ho and my_hp.

def update(factor):
    print "The Lich King is at", mo_hp, "Hit Points"
    print "you did ", my_dmg / factor, "damage!"
    print
    print "I was attacked by the lk for ", mo_dmg," damage!"
    print "My Hit Points are ", my_hp
    print
    return mo_hp - my_dmg / factor, my_hp - mo_dmg
...
        if choice == 1:
            mo_hp, my_hp = update(1)
        elif choice == 2:
            mo_hp, my_hp = update(2)

--
Bob Gailer
919-636-4239
Chapel Hill NC

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to