Function 具有用户输入的函数

Function 具有用户输入的函数,function,python-3.x,pycharm,Function,Python 3.x,Pycharm,我目前正在使用体重指数计算器,我需要能够使用def函数。但是,我不确定如何创建一个包含用户输入(例如身高和体重)的def函数,我知道我的代码完全错误,但无论如何都会发布它。如果有人能给我举个这样的例子,我将不胜感激。我知道我的函数也无法达到使用函数的目的 print("BMI Calculator") name='' while name != '0': name=input("Enter students name or '0' to quit: ") if name ==

我目前正在使用体重指数计算器,我需要能够使用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")

您可以将用户输入移动到如下函数中:

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()
但是这样你就不能在用户输入的时候退出(事实上你可以,但是这会让代码变得更复杂)

不过我建议你使用pythons面向对象的方法,因为这个例子要求这样做:我将创建一个包含学生姓名、体重和大小的类。另外:要计算平方,请使用
**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")

您缺少两个主要方面,它们可以使代码变得更好

在开始时定义您的功能

当前在循环中有函数定义(以
def
开头的块)。这意味着它们将在每次通过该循环时被定义。相反,它们应该在主循环开始之前定义。考虑这个伪代码。< /P>
def bmi():
  # BMI code goes here

def bmi_profile():
  # Print functions go here

##### Main program goes below #####
函数需要参数

您引用的“用户输入”称为参数或参数。它们是传递到函数中的信息。函数需要的任何信息都应包含在
def行的括号中
,以下是bmi函数的示例

def bmi (weight, height):
    bmi = weight * 703 / height ^ 2
    return bmi
看到我如何在括号中包含参数“重量”和“高度”了吗


我希望这足以帮助你完成这个项目。如果您需要更多帮助,请向我汇报,但我想您现在就可以开始了。

如果您只想了解函数,那就太过分了。为什么不演示如何将参数传递给普通函数?@MartijnPieters:我在顶部添加了一个更简单的解决方案我很确定OP有一个家庭作业,要求他们创建BMI函数……是的,看起来像。但我从未放弃希望,希望你能在路上给人们比他们要求的更多for@hansaplast我总是乐于学习更多的东西,这比我想象的要困难得多,我从来没有想过这对土木工程来说是必要的。谢谢你的帮助,我不确定我能不能使用“class”,但我肯定会使用top函数。非常感谢。