简体   繁体   中英

Python 2.7.3 Code Loops Without a While Loop

I am relatively new to programming, so don't be surprised if there are some minor hiccups in the code, but the problem that is happening is that this code seems to loop itself, the whole thing and I don't understand why. I looked at the actual code that runs this function but it seemed fine. So I cannot find any error in this code that makes it loop itself. (If the problem isn't in this code then the looping code it beneath it)

def thebeast(yourhp):
  foe = "Thisisirrelevant"
  enemy = int(random.randint(1,4))
  if enemy == 1:
    foe = "skeleton"
  elif enemy == 2:
    foe = "man with crazy eyes"
  else:
    foe = "dog, a big and scary dog"
  monsteract = 1
  dmg = 0
  print "-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~"
  time.sleep(0.1)
  print "           C O M B A T"
  time.sleep(0.1)
  print "-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~-=~"
  time.sleep(0.1)
  print "You encounter a " + foe
  time.sleep(0.5)
  while monsteract == 1:
    comb = str(input("What do you do to the " + foe + "?" + " Do you feel     like jabbing it or stabbing it?"))
    if comb in ["s", "S", "Stab", "STAB", "stab"]:
      if spear == 1:
        dmg = int(random.randint(1,4))
      elif sword == 1:
        dmg = int(random.randint(1,3))
      else:
        dmg = int(random.randint(1,5))
    elif comb in ["j", "J", "Jab", "JAB", "jab"]:
      if spear == 1:
        dmg = int(random.randint(1,3))
      elif sword == 1:
        dmg = int(random.randint(1,4))
      else:
        dmg = int(random.randint(1,5))
      if dmg == 1:
        print "You slay the " + foe + " with graceful ease"
        time.sleep(0.5)
        monsteract = 0
      else:
        enemydmg = int(random.randint(1,3))
        print "The " + foe + " strikes you for " + str(enemydmg) + " damage"
        time.sleep(0.3)
        print "That didn't work out as planned, but you pull yourself together and prepare to strike the " + foe
        time.sleep(0.3)
        yourhp = yourhp - enemydmg
        if yourhp < 0:
          yourhp = 0
        print "You have " + str(yourhp) + " health left"
        time.sleep(0.3)
        if yourhp < 1:
          print "The " + foe + " has slain you, well done, you're dead, on the bright side the innocent "
          print foe + " is still alive! Every life counts, even that of a " + foe + "."
          monsteract = 0
  return thebeast(yourhp)

Looping code:

def randomevents(yourhp):
    turn = 10
    while turn > 0:
        time.sleep(0.1)
        happening = int(random.randint(1,6))
        time.sleep(0.1)
        if yourhp < 1:
            turn = 0
            print "You managed to escape the dungeon, by dying that is"
        elif happening == 1:
            turn = turn - 1
            thebeast(yourhp)
        elif happening == 2:
            item(sword, spear)
            turn = turn - 1
        elif happening in [3, 4, 5]:
            friend()
            turn = turn - 1
    print "Well done! You escaped the dungeon! (Either by running out of it, or by having your soul sent to another world)"
    useless = str(input("Are you satsified with yourself?: "))

Thank you!

Look at your return statement at the end of thebeast . At the end of the function, you call the function again! Since this happens every time you call it, you will never stop calling it (until you hit the maximum recursion depth). Considering that you don't capture the return value of thebeast in randomevents , you should consider it not returning anything.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM