我在大学预科课程的第3周。我被赋予了计算BMI的任务。我可以编写产生所需输出的代码,但是说明我必须使用函数,这给了我麻烦。这是我提出的代码,我相信也许我的问题是在第12,16和20行,输入值没有存储在函数名中。还有别的东西似乎是错的,因为当我跑它时,它要求学生身高两次。如果有人能看到这个并给我一些方向,我会非常感激。
...说明书
你是当地高中橄榄球队的营养教练。你意识到有些球员在暑假回归时没有达到标准杆。实现营养是一个富有成效的团队的关键,您决定实施身体质量指数计划。 写一个模块化的身体质量指数(BMI)程序,它将计算团队成员的BMI。计算BMI的公式如下: BMI =体重* 703 /身高^ 2 注意:高度^ 2表示,高度值增加到2的幂。 您的程序应使用以下功能: 一种获得运动员重量的方法 获得玩家身高的方法 一种计算运动员BMI的方法 一种显示身高,体重和计算BMI的方法
import math
import sys
print("King's BMI Calculator")
while True:
name = input("Please enter student's name or press 0 to quit:")
if name == "0":
break
def h():
height = int(input("Please enter student's height in inches:"))
return height
def w():
weight = int(input("Please enter student's weight in pounds:"))
return weight
def bmi():
total = float((str(w() * 703)/str(h() * str(h()))))
return total
def printbmi():
print(name + "'s BMI Profile")
print("Height:", str(h(), "inches"))
print("Weight:", str(w(), "lbs"))
print("BMI Index:" + str(float(round(bmi(), 1))))
return
def main():
h()
w()
printbmi()
main()
答案 0 :(得分:0)
无论何时调用函数(即function_name()
),都会执行该函数。因此,只要调用 w()
或h()
,您的脚本就会要求输入。一个简单的解决方案是将返回值存储到变量,可能是weight = w()
和height = h()
,这样您就可以在需要时使用变量,而不是每次调用整个函数。
def w():
# ...
return weight
def h():
# ...
return height
def bmi(w, h)
# ...
return total
def printbmi(w, h, total):
# print(w, h, total)
def main():
# prompt
weight = w()
height = h()
total = bmi(weight, height)
printbmi(weight, height, total)
while True:
main()
答案 1 :(得分:0)
您可以通过考虑以下内容来更新您的代码。
AB11; Angela
AB22; Beatrice
循环之外定义函数(AB22,Edinburgh ,6
AB11,Thunderdome,1
AB11,Station,5
)。Angela
Thunderdone
Station
Beatrice
Edinburgh
和ArrayList<String> names = new ArrayList<String>();
TreeSet<String> destinations = new TreeSet<String>();
public TaxiReader() {
BufferedReader brName = null;
BufferedReader brDest = null;
try {
// Have the buffered readers start to read the text files
brName = new BufferedReader(new FileReader("taxi_details.txt"));
brDest = new BufferedReader(new FileReader("2017_journeys.txt"));
String line = brName.readLine();
String lines = brDest.readLine();
while (line != null && lines != null ){
// The input lines are split on the basis of certain characters that the text files use to split up the fields within them
String name [] = line.split(";");
String destination [] = lines.split(",");
// Add names and destinations to the different arraylists
String x = new String(name[1]);
//names.add(x);
String y = new String (destination[1]);
destinations.add(y);
// add arraylists to treemap
TreeMap <String, TreeSet<String>> taxiDetails = new TreeMap <String, TreeSet<String>> ();
taxiDetails.put(x, destinations);
System.out.println(taxiDetails);
// Reads the next line of the text files
line = brName.readLine();
lines = brDest.readLine();
}
// Catch blocks exist here to catch every potential error
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
// Finally block exists to close the files and handle any potential exceptions that can happen as a result
} finally {
try {
if (brName != null)
brName.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static void main (String [] args){
TaxiReader reader = new TaxiReader();
}
,因为您在h(),w(),bmi()
内呼叫他们。因此,您的课程将要求每位学生两次输入。while
函数移出循环。您的h()
和bmi()函数也存在问题。您多次调用w()
和main()
函数。
您可以按照以下方式更新代码。
printbmi()
输出:
main()