2017-10-10 9 views
1

私はおそらく非常に基本的で簡単な問題に立ち往生してきました。私はモジュールを使用したいと思う非常に簡単なプログラムを作成したいと思う(私はBMIの計算機で働いている)。私はそれを書きましたが、なぜそれが機能していないのかまだ分かりません。Pythonで作成した単純なモジュールの使い方は?

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

は、それがさらに行くために私を助けていただきありがとうございます!それにもかかわらず、私は高さと重量を入力した後、私がプログラムをテストするときに(私のメインプログラムで)bmiが定義されていないと言っています。 – Pak

+0

更新された回答を参照 – DavidG

答えて

2

のPython 3.xでは、input()は、文字列を返します。

height = input("Enter you height (in inches): ") 
print (type(height)) 
# <class 'str'> 

したがって:あなたが見ている正確に誤りはどれ

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' 

height ** 2 

はになります。この問題を解決するためには、単に今あなたがheight上で数学演算を実行することができるようになります

height = int(input("Enter you height (in inches): ")) 
print (type(height)) 
# <class 'int'> 

int()を使用して、整数にinputの結果をキャスト。あなたが示されたエラーは問題がで発生言う

EDIT

heightSq = (height)**2 

はしかし、あなたがを提供しているコードがはintにheightをキャストありません。 intにキャストすると問題が解決します。あなたが値をreturnする必要が関数の外bmiの値を得るためには

EDIT 2

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() 
+0

OK!本当にありがとう、私は理解し始めたと思う。しかし、本当にありがとう!私は壁の前にいることを告げていた...何度も何度もありがとう! – Pak

+0

これはあなたの質問に答えても大丈夫ですが、upvoteとacceptを忘れていないので、解決済みとマークすることができます。 – DavidG

関連する問題