【问题标题】:New to programming, don't understand why I can't get this variable to print [duplicate]编程新手,不明白为什么我无法打印此变量[重复]
【发布时间】:2016-05-29 23:35:30
【问题描述】:

每当我运行此代码时,它都会告诉我第 19 行 distanceTravelled 没有定义,但我认为我在函数中定义了它。感谢您的帮助。

startKilometre = float(input("What is the starting kilometre?"))
finalKilometre = float(input("What is the final kilomotre"))
finalFuel = float(input("How much fuel did you put in the car?"))

def functionTravelled(startKilometre, finalKilometre):
    distanceTravelled = finalKilometre - startKilometre
    return distanceTravelled



def functionLitresKilo(distanceTravelled, finalFuel):
    litresPerKilometre = distanceTravelled / finalFuel
    return litresPerKilometre

def functionKiloLitres(finalFuel, distanceTravelled):
    kilometresPerLitre = finalFuel / distanceTravelled
    return kilometresPerLitre

print(distanceTravelled)
print(litersPerKilometre)
print(kilometresPerLitre)

【问题讨论】:

标签: python


【解决方案1】:

您永远不会调用函数来获取它们返回的值,因此,您的代码运行如下:

startKilometre = float(input("What is the starting kilometre?"))
finalKilometre = float(input("What is the final kilomotre"))
finalFuel = float(input("How much fuel did you put in the car?"))

print(distanceTravelled)
print(litersPerKilometre)
print(kilometresPerLitre)

这当然不是你想要的。您需要调用每个函数并将返回结果存储在变量中:

startKilometre = float(input("What is the starting kilometre?"))
finalKilometre = float(input("What is the final kilomotre"))
finalFuel = float(input("How much fuel did you put in the car?"))

def functionTravelled(startKilometre, finalKilometre):
    distanceTravelled = finalKilometre - startKilometre
    return distanceTravelled

def functionLitresKilo(distanceTravelled, finalFuel):
    litresPerKilometre = distanceTravelled / finalFuel
    return litresPerKilometre

def functionKiloLitres(finalFuel, distanceTravelled):
    kilometresPerLitre = finalFuel / distanceTravelled
    return kilometresPerLitre

distanceTravelled = functionTravelled(startKilometre, finalKilometre)
litersPerKilometre = functionLitresKilo(distanceTravelled, finalFuel)
kilometresPerLitre = functionKiloLitres(finalFuel, distanceTravelled)

print(distanceTravelled)
print(litersPerKilometre)
print(kilometresPerLitre)

【讨论】:

  • 完全不是问题@H.Seigne,如果这个解决方案解决了你的问题,你能把它标记为正确吗?
【解决方案2】:

您正在尝试打印一个不存在的变量。该变量在您的 functionTravelled 函数中本地定义。您想打印这些函数返回的内容(并且您从未真正调用过您的函数)。

例如-

startKilometre = float(input("What is the starting kilometre?"))
finalKilometre = float(input("What is the final kilomotre"))
finalFuel = float(input("How much fuel did you put in the car?"))

def functionTravelled(startKilometre, finalKilometre):
    distanceTravelled = finalKilometre - startKilometre
    return distanceTravelled

travelled = functionTravelled(startKilometre, finalKilometre)
print(travelled)

同样适用于您的其他打印语句/函数。

【讨论】:

    【解决方案3】:

    有点像“在拉斯维加斯发生的事情,留在拉斯维加斯”,您在函数中定义了变量,并且在函数外部不可见。这是故意这样做的,这样您就不必担心在函数中为变量使用唯一名称。

    您的函数是为返回变量的值而构建的,因此只需调用它们即可。这里我通过调用函数在全局范围内分配变量。

    startKilometre = float(input("What is the starting kilometre?"))
    finalKilometre = float(input("What is the final kilomotre"))
    finalFuel = float(input("How much fuel did you put in the car?"))
    
    def functionTravelled(startKilometre, finalKilometre):
        distanceTravelled = finalKilometre - startKilometre
        return distanceTravelled
    
    
    
    def functionLitresKilo(distanceTravelled, finalFuel):
        litresPerKilometre = distanceTravelled / finalFuel
        return litresPerKilometre
    
    def functionKiloLitres(finalFuel, distanceTravelled):
        kilometresPerLitre = finalFuel / distanceTravelled
        return kilometresPerLitre
    
    distanceTravelled = functionTravelled(startKilometre, finalKilometre)
    print(distanceTravelled)
    
    etc....
    

    【讨论】:

      【解决方案4】:

      您似乎需要对函数的定义和调用方式进行更多研究。您认为它们是为了好玩而缩进的代码块,并且没有实际使用的理由。不是这种情况。函数被定义,然后被调用,此时它们返回一个值给调用者。以下不是函数:

      a = 0
      print(a)
      

      将其放入函数中的工作方式不同,正如您正在做的这个精简版本中所看到的那样:

      def x():
          a = 0
          return a
      print(a)
      

      函数必须以其实际名称调用,并且您可能希望保存返回的值:

      def x():
          a = 0
          return a
      var = x()
      print(var)
      

      如果您在 Google 上搜索如何在 Python 中定义和使用函数,您可以从 the official tutorial's section on defining functions 以及 Internet 上的许多其他地方了解有关函数的更多信息。

      【讨论】:

      • 抱歉刚刚开始为学校学习python。我觉得记住所有规则有点困难。
      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2023-03-22
      • 2019-04-21
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      相关资源
      最近更新 更多