我已经坚持了两个星期,这可能是一个非常基本而简单的问题。我想创建一个非常简单的程序(例如我正在研究BMI计算器),我想要使用一个模块。我写了它,我仍然不明白为什么它不起作用。我修改了很多次试图找到解决方案,所以我有很多不同的错误消息,但在我的程序的这个版本上,消息是(在它要求输入高度后):
Enter you height (in inches): 70
Traceback (most recent call last):
File "C:/Users/Julien/Desktop/Modules/Module ex2/M02 ex2.py", line 6, in <module>
from modBmi import *
File "C:/Users/Julien/Desktop/Modules/Module ex2\modBmi.py", line 11, in <module>
modBmi()
File "C:/Users/Julien/Desktop/Modules/Module ex2\modBmi.py", line 5, in modBmi
heightSq = (height)**2
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'"
这是我的代码(有关信息,我的模块位于单独的文件“modBmi.py”中,但与我的主程序位于同一文件夹中):
#Python 3.4.3
#BMI calculator
def modBmi():
#ask the height
height = input ("Enter you height (in inches): ")
#create variable height2
heightSq = int(height)**2
#ask th weight
weight = input ("Enter you weight (in pounds): ")
#calculate bmi
bmi = int(weight) * 703/int(heighSq)
modBmi()
#import all informatio from modBmi
from modBmi import *
#diplay the result of the calculated BMI
print("Your BMI is: " +(bmi))
答案 0 :(得分:2)
在Python 3.x中,height = input("Enter you height (in inches): ")
print (type(height))
# <class 'str'>
将返回一个字符串。
height ** 2
因此:
Traceback (most recent call last):
File "C:/Python34/SO_Testing.py", line 45, in <module>
height ** 2
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
将导致:
input
这正是您所看到的错误。要解决此问题,只需使用int()
height = int(input("Enter you height (in inches): "))
print (type(height))
# <class 'int'>
的结果转换为整数
height
现在,您将能够在heightSq = (height)**2
上执行数学运算。
修改强>
您显示的错误说明问题发生在:
height
但是,您提供的代码 将bmi
强制转换为int。转换为int将解决您的问题。
编辑2
为了获得函数外return
的值,您需要def modBmi():
#ask the height
height = input ("Enter you height (in inches): ")
#create variable height2
heightSq = int(height)**2
#ask th weight
weight = input ("Enter you weight (in pounds): ")
#calculate bmi
bmi = int(weight) * 703/int(heighSq)
return bmi
bmi = modBmi()
值:
Student