Моя программа должна останавливаться, когда переменная равна 0 или меньше, но когда программа запускается, если переменная больше 0, код сбрасывается.

Вот мой код: Main.py

import random
import os 
import sys
global foodamount
foodamount = random.randint(1,10)
answer = str(input(("Right or Left")))
if answer == "Right" or answer == "right":
  #Check if foodamount is greater than 1, then if it is run cave.py
  foodamount = foodamount -1
  if foodamount < 1:
    print("You ran out of food. You lose")
    sys.exit()
  if foodamount > 0:
    os.system('python cave.py')

Это cave.py

import random
import sys
import os
import main
print("Do you want to attack?")
attak = str(input(("Yes or No")))
if attak == "Yes" or attak == "yes":
  x = random.randint(1,2)
  if x == 1:
    os.system('python attack')
    
  if x == 2:
    
    print("You lose")
    sys.exit()
if attak == "no" or attak == "No":
  print("Do you leave the cave or go around the spider?")
  y = str(input("Leave or Around"))
  if y == "Leave" or y == "leave":
    main.foodamount = main.foodamount -1
    if main.foodamount < 1:
      print("You ran out of food. You lose")
      sys.exit()
    else:
      os.system('python test')

Когда я запускаю это в python, программа запускается с начала, программа перезапускается с начала.

Если бы вы могли помочь с этим, это будет с благодарностью.

1
ProDevGuy 27 Май 2017 в 18:26

2 ответа

Лучший ответ

Ваша программа перезапускается, потому что все операции импорта были неверными. Я не уверен, каким должен быть правильный вывод, но я решил ваш код, чтобы он не перезапускался, прежде чем делать то, что он должен делать. Надеюсь, это поможет. Наконец, вам нужно иметь оба файла в одном каталоге, чтобы они работали.

Main.py

import random
import os 
import sys
import cave

foodamount = random.randint(1,10)

def main():
    global foodamount

    answer = str(input(("Right or Left")))

    if answer == "Right" or answer == "right":
        #Check if foodamount is greater than 1, then if it is run cave.py
        foodamount = foodamount -1

        if foodamount < 1:
            print("You ran out of food. You lose", foodamount)
            sys.exit()
        elif foodamount > 0:
            os.system('python cave.py')        
main()

Cave.py

import random
import sys
import os
from Main import *

print("You are in a cold section of the cave")
print("You see a spider in front of you")
print("Do you want to attack?")

attak = str(input(("Yes or No")))

if attak == "Yes" or attak == "yes":
    x = random.randint(1,2)
    if x == 1:
        os.system('python attack')     
    if x == 2:
        print("You lose")
        sys.exit()

if attak == "no" or attak == "No":
    print("Do you leave the cave or go around the spider?")
    y = str(input("Leave or Around"))
    if y == "Leave" or y == "leave":
        foodamount = foodamount -1
        if foodamount < 1:
            print("You ran out of food. You lose")
            sys.exit()
        else:
            os.system('python test')
1
Olufisayo Joseph Ayodele 28 Май 2017 в 20:39

Похоже, что вы написали скрипт, который запускается сам в конце, если выполняются определенные условия. Не делай этого. Вместо этого напишите функцию, которая реализует вашу игровую логику, и запустите эту функцию в цикле while, например:

def play_game():
    if the player dies:
        return False
    return True

while play_game():
    pass
0
John Zwinck 28 Май 2017 в 02:35