Python 将变量从一个函数调用到另一个函数

Python 将变量从一个函数调用到另一个函数,python,Python,基本上,我想把变量‘en’从‘energy’函数调用为‘TNT’函数。我该怎么做呢 class richter_Stuff(): def energy(self): richter = float(input("Enter a Richter scale value from 1 to 10: ")) if richter >= 1.0 and richter <= 10.0 : en = 10**(1.5 *

基本上,我想把变量‘en’从‘energy’函数调用为‘TNT’函数。我该怎么做呢

class richter_Stuff():

    def energy(self):

        richter = float(input("Enter a Richter scale value from 1 to 10: "))

        if richter >= 1.0 and richter <= 10.0 :

            en = 10**(1.5 * richter + 4.8)
            print "For a Richter scale value of %.2f, the energy equivalent in Joules is: %.2f" %(richter, en)

        return

        else:
             print "You have entered an incorrect number. Please try again"

         energy()

    def TNT(self, energy):

        one_tonne_tnt_to_joules = 4.184*(10**9)

        TNT = en/one_tonne_tnt_to_joules

        print TNT

TNT()
class richter\u Stuff():
def能量(自):
里氏=浮点(输入(“输入1到10之间的里氏刻度值:”)

如果里氏>=1.0且里氏,您可以
在能量函数中返回en
,并将其分配给TNT中的其他变量使用
global
s,因为您使用的是类,所以您也可以使用
self.en
作为变量名,而不仅仅是
en
,以指出
en
在那一类的范围

在这种情况下,最好的方法可能是使用
class
的建议

class richter_Stuff():

    def energy(self):

        richter = float(input("Enter a Richter scale value from 1 to 10: "))
        if richter >= 1.0 and richter <= 10.0 :
            self.en = 10**(1.5 * richter + 4.8)
            print "For a Richter scale value of %.2f, the energy equivalent in Joules is: %.2f" %(richter, self.en)
        else:
             print "You have entered an incorrect number. Please try again"
             self.energy()

    def TNT(self):

        en = self.en
        one_tonne_tnt_to_joules = 4.184*(10**9)
        TNT = en/one_tonne_tnt_to_joules
        print TNT

richt = richter_Stuff()
richt.energy()
richt.TNT()
class richter\u Stuff():
def能量(自):
里氏=浮点(输入(“输入1到10之间的里氏刻度值:”)

如果里氏>=1.0且里氏,您可以
在能量函数中返回en
,并将其分配给TNT中的其他变量使用
global
s,因为您使用的是类,所以您也可以使用
self.en
作为变量名,而不仅仅是
en
,以指出
en
在那一类的范围

在这种情况下,最好的方法可能是使用
class
的建议

class richter_Stuff():

    def energy(self):

        richter = float(input("Enter a Richter scale value from 1 to 10: "))
        if richter >= 1.0 and richter <= 10.0 :
            self.en = 10**(1.5 * richter + 4.8)
            print "For a Richter scale value of %.2f, the energy equivalent in Joules is: %.2f" %(richter, self.en)
        else:
             print "You have entered an incorrect number. Please try again"
             self.energy()

    def TNT(self):

        en = self.en
        one_tonne_tnt_to_joules = 4.184*(10**9)
        TNT = en/one_tonne_tnt_to_joules
        print TNT

richt = richter_Stuff()
richt.energy()
richt.TNT()
class richter\u Stuff():
def能量(自):
里氏=浮点(输入(“输入1到10之间的里氏刻度值:”)

如果里氏>=1.0且里氏以最字面的方式回答您的问题:
energy()
应该是
self.energy(en)
。但如果你理解课堂,你就会知道。您的代码在其他方面也有问题

你真的需要考虑你想要实现的目标:

  • 读里氏震级。如果错误,请重读

  • 根据刻度计算焦耳

  • 根据焦耳计算TNT量

  • 打印信息

  • 重复一遍

  • 您的代码应该反映这一点。如果你看一看更严格的里希特。读一读循环,那就是发生的事情

    代码中词语的选择表明对函数和数据点之间的区别存在混淆。这就是为什么
    energy
    被重命名为
    calc\u energy
    TNT
    calc\u TNT
    的原因,因为它们产生与其输入相关的输出;它们本身并不是输出。相关变量(如
    richter
    energy
    TNT
    )应存在于相同的范围内,因此它们在相同的循环中计算

    以下内容建立在以下基础上

    等级更严格的里希特(对象):
    tnt焦耳比=4.184*(10**9)
    定义初始化(自):
    self.continue\u reading=True
    def read_循环(自):
    当self.continue\u阅读时:
    里氏震级=输入(“输入1到10之间的里氏震级值:”)
    里希特=浮动(里希特街)
    如果里氏震级<1.0或里氏震级>10.0:
    打印“您输入的号码不正确。请重试”
    持续
    能量=自身计算能量(里氏)
    TNT=自计算TNT(能量)
    “打印”对于%.2f的里氏标度值,以焦耳为单位的能量当量为:%.2f“%(里氏,能量)
    打印“那是%.2f吨TNT!!!%TNT
    def calc_能量(自身,里氏):
    能量=10**(1.5*里氏+4.8)
    返回能量
    def calc_TNT(自身、能量):
    TNT=能量/自身TNT焦耳比
    返回TNT
    里希特=更严格的里希特()
    richt.read_loop()
    
    从字面上回答你的问题:
    energy()
    应该是
    self.energy(en)
    。但如果你理解课堂,你就会知道。您的代码在其他方面也有问题

    你真的需要考虑你想要实现的目标:

  • 读里氏震级。如果错误,请重读

  • 根据刻度计算焦耳

  • 根据焦耳计算TNT量

  • 打印信息

  • 重复一遍

  • 您的代码应该反映这一点。如果你看一看更严格的里希特。读一读循环,那就是发生的事情

    代码中词语的选择表明对函数和数据点之间的区别存在混淆。这就是为什么
    energy
    被重命名为
    calc\u energy
    TNT
    calc\u TNT
    的原因,因为它们产生与其输入相关的输出;它们本身并不是输出。相关变量(如
    richter
    energy
    TNT
    )应存在于相同的范围内,因此它们在相同的循环中计算

    以下内容建立在以下基础上

    等级更严格的里希特(对象):
    tnt焦耳比=4.184*(10**9)
    定义初始化(自):
    self.continue\u reading=True
    def read_循环(自):
    当self.continue\u阅读时:
    里氏震级=输入(“输入1到10之间的里氏震级值:”)
    里希特=浮动(里希特街)
    如果里氏震级<1.0或里氏震级>10.0:
    打印“您输入的号码不正确。请重试”
    持续
    能量=自身计算能量(里氏)
    TNT=自计算TNT(能量)
    “打印”对于%.2f的里氏标度值,以焦耳为单位的能量当量为:%.2f“%(里氏,能量)
    打印“那是%.2f吨TNT!!!%TNT
    def calc_能量(自身,里氏):
    能量=10**(1.5*里氏+4.8)
    返回能量
    def calc_TNT(自身、能量):
    TNT=能量/自身TNT焦耳比
    返回TNT
    里希特=更严格的里希特()
    richt.read_loop()
    
    @dilbert啊,当然。我只是在回答这个问题。添加另一个答案的链接以摆脱递归,因为它比我以前解释得更好。@dilbert啊,当然了。我只是一个孩子