Jadi saya punya 2 file, fish_life_simulator.py dan menu.py. fish_life_simulator.py adalah file utama dan mengeksekusi file lain seperti menu.py tergantung pada apa yang terjadi. Jadi di sini adalah kode dan cara kerjanya:

import os

os.chdir(os.path.dirname(__file__))

result = exec(open(r'menu.py', encoding='utf-8').read())

print(result)

Jadi pada awalnya ketika kode tiba di result = exec(open(r'menu.py', encoding='utf-8').read()) itu mengeksekusi menu.py dan semuanya baik-baik saja, tetapi bisa berhenti karena beberapa alasan:

  1. Pemain keluar dari permainan
  2. Pemain memasuki pengaturan
  3. Pemain menekan tombol play

Jadi apa yang saya putuskan untuk lakukan, adalah ketika menu.py akan berhenti berjalan, itu akan mengembalikan nilai, seperti 1, 2 atau 3, jadi saya mencoba beberapa metode yang telah disertakan di sini: Cara terbaik untuk mengembalikan nilai dari skrip python seperti menggunakan return atau sys.exit("some value here"), tetapi meskipun saya melakukan bagian di dalam menu.py, keduanya tidak berfungsi, seperti ketika saya mencoba mengembalikan, result dari result = exec(open(r'menu.py', encoding='utf-8').read()) selalu None untuk beberapa alasan dan ketika saya mencoba sys.exit(1) misalnya, hasilnya tidak dicetak sama sekali, jadi saya hanya berkeliaran jika itu adalah sesuatu yang saya lewatkan di dalam fish_life_simulator.py, karena bagian dengan mengirim nilai seharusnya baik-baik saja, tetapi bagian menerimanya bermasalah.

1
hellwraiz 12 Mei 2021, 01:29

2 jawaban

Jawaban Terbaik

Cukup tentukan fungsi di menu.py:

def do_stuff_in_menu():
    ...
    return result

Dan di fish_life_simulator.py Anda cukup memanggil fungsi itu:

import menu

result = menu.do_stuff_in_menu()
print(result)
3
schilli 11 Mei 2021, 22:41