Python AttributeError:“函数”对象没有属性“w”

Python AttributeError:“函数”对象没有属性“w”,python,module,undefined,Python,Module,Undefined,我正在为我的编程入门课程制作一个BMI计算器,我正在努力学习如何使用模块。我试图实现一个系统,用户只允许输入整数 我没怎么试过,也没能找到一个简单的答案,所以我来了 def Run(): bmi = ((int(valcheckw.w) * 703)/(int(valcheckh.h)*int(valcheckh.h)) def valcheckw(): w = (input('weight(Lbs):')) try: val0 = int(w)

我正在为我的编程入门课程制作一个BMI计算器,我正在努力学习如何使用模块。我试图实现一个系统,用户只允许输入整数

我没怎么试过,也没能找到一个简单的答案,所以我来了

def Run():
    bmi = ((int(valcheckw.w) * 703)/(int(valcheckh.h)*int(valcheckh.h))

def valcheckw():
    w = (input('weight(Lbs):'))
    try: 
        val0 = int(w)
    except ValueError:
        print("That's not an int!")
        del w
        valcheckw()

def valcheckh():
    h = (input('height in inches'))
    try:
        val = int(h)
    except ValueError:
        print("That's not an int!")
        del h
        valcheckh()

valcheckw()
valcheckh()
Run()

在运行中,我希望它只是从各自的模块中提取变量w和h,但是我得到一个错误,说它们没有定义

您需要返回两个函数valcheckw和valcheckh的结果val0和val1,以便在run函数中访问它们

您还需要确定输入数据实际上是否是数字或其他类型。您可以为此使用float函数

下面的内容可能有助于您对如何正确实现所需结果进行建模:

#!/usr/bin/env python3

def valcheckw():
    w=input('weight(lbs): ')
    try:
        val0=float(w)
        return val0
    except ValueError:
        print('That\'s not a number!')
        valcheckw()

def valcheckh():
    h=input('height(in): ')
    try:
        val1=float(h)
        return val1
    except ValueError:
        print('That\'s not a number!')
        valcheckh()

def run():
    weight=valcheckw()
    height=valcheckh()
    bmi=float(weight * 703/float(height*height))
    print(bmi)

### main ###
run()

这里只有一个具有多个功能的模块。像w这样的变量是这些函数的局部变量,它们不是这些函数的属性。此外,del语句也不起任何作用。当函数终止时,局部变量就不存在了。我没有否决投票,但是这段代码是不正确的,并且没有解决基本的混淆问题。