2017-01-15 4 views
0

私は現在BMI計算機で作業しており、def関数を使用できる必要があります。しかし、ユーザー入力(高さや重量など)を持つdef関数を作成する方法を正確にはわかりませんが、私のコードは完全に間違っていますが、とにかく投稿します。誰かが私にそのような例を与えることができれば、それは非常に高く評価されるだろう。私は自分の関数が関数を使う目的を無効にすることも知っています。ユーザー入力を伴う関数

print("BMI Calculator") 
name='' 
while name != '0': 
    name=input("Enter students name or '0' to quit: ") 
    if name == '0': 
     break 
    weight=float(input('Enter students weight: ')) 
    height=float(input('Enter Students height in Inches:')) 
    def bmi(): 
     bmi = weight*703/height^2 
     return bmi 
    def bmi_profile(): 
     print('BMI Profile!') 
     print('Students name:', name) 
     print('Students weight: ', weight) 
     print('Students height:', height) 
     print('BMI Index: ', bmi) 
    bmi_profile() 
print("Goodbye") 
+1

https://docs.python.org/3/tutorial/controlflow.html#defining-functions – jonrsharpe

答えて

-1

あなたはこのように関数にユーザーの入力を移動することができます。

def user_input(): 
    name=input("Enter students name or '0' to quit: ") 
    weight=float(input('Enter students weight: ')) 
    height=float(input('Enter Students height in Inches:')) 
    return (name, weight, height) 

name, weight, height = user_input() 

しかし、あなたは、ユーザ入力ステップで終了することはできません。この方法(実際には、あなたできが、それはなるだろうコードはかなり複雑です)。

私はあなたにアドバイスをしたいと思いますが、この例では何とかこの質問をしているので、ピトンオブジェクトの指向性を使用することです:私は、学生の名前、体重、サイズを保持するクラスを作成します。さらに:平方演算を計算するには**2。あなたはそれがこのコードはかなり良く作ることができる逃している二つの主要なものがあります

class BMI: 
    name = None 
    weight = None 
    height = None 

    def fill_from_input(self): 
     self.name=input("Enter students name: ") 
     self.weight=float(input('Enter students weight: ')) 
     self.height=float(input('Enter Students height in Inches:')) 

    @property 
    def bmi(self): 
     return self.weight*703/self.height**2 

    def __repr__(self): 
     return """BMI Profile! 
Students name: {} 
Students weight: {} 
Students height: {} 
BMI Index: {}""".format(self.name, self.weight, self.height, self.bmi) 

while input("Ready to type in student? [Y/n]").lower() in ['y', '']: 
    bmi = BMI() 
    bmi.fill_from_input() 
    print(bmi) # calls __repr__ 
print("Goodbye") 
+0

これは、機能について学びたいだけのときには少し残忍です。単純な関数に引数を渡す方法を示してみませんか? –

+0

@MartijnPieters:トップにシンプルなソリューションを追加しました – hansaplast

+0

私は、OPに彼らにBMI機能の作成を依頼する宿題があると確信しています。 –

0

はここでクラスを使用して、あなたの完全に作り直さコードです。

あなたが現在お使いのループ内であなたの関数定義(defで始まるブロック)を持って始め

であなたの関数を定義します。これは、そのループを通して毎回定義されることを意味します。代わりに、メインループが始まる前にそれらを定義する必要があります。この擬似コードを考えてみましょう。

def bmi(): 
    # BMI code goes here 

def bmi_profile(): 
    # Print functions go here 

##### Main program goes below ##### 

あなたの関数は、引数「ユーザ入力」あなたは、引数またはパラメータと呼ばれて参照してください

を必要としています。それらは関数に渡される情報です。関数が必要とする情報は、def lineのかっこに含めてください。ここでは、bmi関数の例を示します。

def bmi (weight, height): 
    bmi = weight * 703/height^2 
    return bmi 

私は括弧内のパラメータの体重と身長を含めましたどのように参照してください?

このプロジェクトでお役に立てれば幸いです。さらに助けが必要な場合は、報告してください。しかし、今すぐ始められると思います。

関連する問題