使用另一个Python文件中的变量&;模块中的函数未运行?

使用另一个Python文件中的变量&;模块中的函数未运行?,python,python-3.x,repl.it,Python,Python 3.x,Repl.it,这是我的继续,有更多的细节。(格式应该更好,因为我现在在电脑上!) 所以我尝试用Python创建一个游戏,如果一个数字达到一定的数量,你就会输。你试图控制这个数字,防止它达到不应该达到的数字。现在,我在上一个问题中有一个错误说: AttributeError:模块“core temp”没有属性“ct” 但是,我对代码做了一些修改,不再出现任何错误。但是,当我运行代码时,我创建的模块中的函数不会运行 为了确保任何试图找出解决方案的人都拥有他们需要的所有资源,我将提供我的所有代码 这是文件main.

这是我的继续,有更多的细节。(格式应该更好,因为我现在在电脑上!)

所以我尝试用Python创建一个游戏,如果一个数字达到一定的数量,你就会输。你试图控制这个数字,防止它达到不应该达到的数字。现在,我在上一个问题中有一个错误说:

AttributeError:模块“core temp”没有属性“ct”

但是,我对代码做了一些修改,不再出现任何错误。但是,当我运行代码时,我创建的模块中的函数不会运行

为了确保任何试图找出解决方案的人都拥有他们需要的所有资源,我将提供我的所有代码

这是文件
main.py
中的代码:

from termcolor import colored
from time import sleep as wait
import clear
from coretemp import ct, corestart

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if ct < 2000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "green"))
                elif ct < 4000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "yellow"))
                elif ct >= 3000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C", "red"))


print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
start()
corestart(10)
print("clear.py working")

def clear():
print("\n"*100)
from time import sleep as wait

print("coolant.py working")

coolam = 100
coolactive = False

def coolact():
    print("Activating coolant...")
    wait(2)
    coolactive = True
    print("Coolant activated. "+coolam+" coolant remaining.")
from coolant import coolactive
from time import sleep as wait
print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
from termcolor import colored
from time import sleep as wait
import clear
import coretemp
import threading

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if coretemp.ct < 2000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "green"))
                elif coretemp.ct < 4000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "yellow"))
                elif coretemp.ct >= 3000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C", "red"))



print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
coretemp.corestart(10)
t1 = threading.Thread(target=coretemp.coreactive)
t1.start()
start()
from coolant import coolactive
from time import sleep as wait

print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st

def coreactive():
  global ct
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
这是文件
冷却液.py
中的代码:

from termcolor import colored
from time import sleep as wait
import clear
from coretemp import ct, corestart

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if ct < 2000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "green"))
                elif ct < 4000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "yellow"))
                elif ct >= 3000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C", "red"))


print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
start()
corestart(10)
print("clear.py working")

def clear():
print("\n"*100)
from time import sleep as wait

print("coolant.py working")

coolam = 100
coolactive = False

def coolact():
    print("Activating coolant...")
    wait(2)
    coolactive = True
    print("Coolant activated. "+coolam+" coolant remaining.")
from coolant import coolactive
from time import sleep as wait
print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
from termcolor import colored
from time import sleep as wait
import clear
import coretemp
import threading

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if coretemp.ct < 2000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "green"))
                elif coretemp.ct < 4000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "yellow"))
                elif coretemp.ct >= 3000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C", "red"))



print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
coretemp.corestart(10)
t1 = threading.Thread(target=coretemp.coreactive)
t1.start()
start()
from coolant import coolactive
from time import sleep as wait

print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st

def coreactive():
  global ct
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
这是文件
coretemp.py
中的代码:

from termcolor import colored
from time import sleep as wait
import clear
from coretemp import ct, corestart

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if ct < 2000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "green"))
                elif ct < 4000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "yellow"))
                elif ct >= 3000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C", "red"))


print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
start()
corestart(10)
print("clear.py working")

def clear():
print("\n"*100)
from time import sleep as wait

print("coolant.py working")

coolam = 100
coolactive = False

def coolact():
    print("Activating coolant...")
    wait(2)
    coolactive = True
    print("Coolant activated. "+coolam+" coolant remaining.")
from coolant import coolactive
from time import sleep as wait
print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
from termcolor import colored
from time import sleep as wait
import clear
import coretemp
import threading

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if coretemp.ct < 2000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "green"))
                elif coretemp.ct < 4000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "yellow"))
                elif coretemp.ct >= 3000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C", "red"))



print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
coretemp.corestart(10)
t1 = threading.Thread(target=coretemp.coreactive)
t1.start()
start()
from coolant import coolactive
from time import sleep as wait

print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st

def coreactive():
  global ct
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
注意:

文件中的一些代码是不完整的,所以有些事情现在看起来好像什么都没做

如果您想查看代码本身,这里有一个指向repl.it的链接:

注意#2:


抱歉,如果事情的格式不正确,如果我在问题中做错了什么,等等。我对问Stackoverflow的问题相当陌生

通常不能同时运行两件事,因此当您处于
start()
while True
中时,您永远无法进入代码的下一位,因为
while True
永远都是True

所以,穿线去营救!线程允许一件事情在一个地方进行,另一件事情在另一个地方进行。如果我们将更新和打印温度的代码放在它自己的线程中,我们可以将其设置为运行,然后继续执行
start()
中的无限循环,同时线程继续在后台运行

另一个注意事项是,您应该导入
coretemp
本身,而不是从
coretemp
导入变量,否则您将在
main.py
中使用变量
ct
的副本,而实际需要使用
coretemp
中的
ct
的实际值

无论如何,这里有一个最小的代码更新,显示了线程的使用

main.py

from termcolor import colored
from time import sleep as wait
import clear
from coretemp import ct, corestart

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if ct < 2000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "green"))
                elif ct < 4000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C",
                            "yellow"))
                elif ct >= 3000:
                    print(
                        colored("Core temperature: " + str(ct) + "°C", "red"))


print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
start()
corestart(10)
print("clear.py working")

def clear():
print("\n"*100)
from time import sleep as wait

print("coolant.py working")

coolam = 100
coolactive = False

def coolact():
    print("Activating coolant...")
    wait(2)
    coolactive = True
    print("Coolant activated. "+coolam+" coolant remaining.")
from coolant import coolactive
from time import sleep as wait
print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)
from termcolor import colored
from time import sleep as wait
import clear
import coretemp
import threading

print(colored("Begin program", "blue"))
wait(1)
clear.clear()


def start():
    while True:
        while True:
            cmd = str(input("Core> "))
            if cmd == "help":
                print(
                    "List of commands:\nhelp - Show a list of commands\ntemp - Show the current temperature of the core in °C\ninfo - Show core info\ncool - Show coolant control"
                )
                break
            elif cmd == "temp":
                if coretemp.ct < 2000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "green"))
                elif coretemp.ct < 4000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C",
                                "yellow"))
                elif coretemp.ct >= 3000:
                    print(
                        colored("Core temperature: " + str(coretemp.ct) + "°C", "red"))



print("Welcome to SprinkleLaboratories Main Core System")
wait(1)
print(
    "\nYou have been hired as the new core operator.\nYour job is to maintain the core, and to keep the temperature at a stable number. Or... you could see what happens if you don't..."
)
wait(3)
print("\nTo view available commands, use the \"help\" command!")
cont = input("Press enter to continue> ")
clear.clear()
coretemp.corestart(10)
t1 = threading.Thread(target=coretemp.coreactive)
t1.start()
start()
from coolant import coolactive
from time import sleep as wait

print("coretemp.py working")

ct = 0

def corestart(st):
  global ct
  ct = st

def coreactive():
  global ct
  while True:
    if coolactive == False:
      ct = ct + 1
      print(ct)
      wait(.3)
    else:
      ct = ct - 1
      print(ct)
      wait(1)

您可以看到,我们仍有一些工作要做,以使输出看起来更好,等等,但希望您能了解总体思路。

您是指问题吗?看起来很相似。@Watty62是的,就是那个函数不运行的那个?好的。问题是什么?例如,你想做什么,你期望的输出或结果是什么,你得到的与你得到的有什么不同?我正在试图弄明白你在尝试什么。@coretemp.py中的yonili corestart()谢谢!有机会的时候我会查一查的!