具有用户输入的功能

时间:2017-01-15 13:49:20

标签: function python-3.x pycharm

我目前正在研究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")

2 个答案:

答案 0 :(得分: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

看看我如何在括号中包含参数重量和高度?

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

答案 1 :(得分:-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()

但是这样你就无法在用户输入步骤退出(实际上你可以但这会使代码变得更加复杂)。

我建议你使用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")