如何在计算数字后添加一个 int 和一个 str 打印出来?我一直在尝试,但它不起作用?

How to add a int and a str to print out after it calculates the numbers? I keep trying and it doesnt work?

我对编程还是很陌生,python...任何帮助将不胜感激..

我正在我的 python class.. 中做一个 BMI 计算器。我实际上按照教练想要的方式工作,但我想稍微改进一下,但我不知道它是会这么困难。 我的原始代码实际上作为导师想要的是这样的:

height = input("enter your height in m: ")
weight = input("enter your weight in kg: ")
height = float(height)
weight = int(weight)
result = (height ** 2)
 
print(int(weight / result))

现在,当它运行时,它会打印出以米为单位输入您的身高: 然后你输入高度然后打印 输入您的体重(公斤): 然后你输入你的体重然后它只是计算它并且 returns 只是结果数字.. 在这种情况下是 35.

我想有点野心,我想把它打印成这样: 我想让它打印 您的 BMI 是 35 而不是 35.. 我没想到会那么难,但是哇.. 我尝试了很多不同的方法.. 这是我最后一次尝试..它实际上按照我想要的方式打印但随后它显示了这个很大的LONG错误..它甚至计算正确..所以我不知道为什么它在执行我想要的时会给出错误它做什么??? 这是我现在的代码...

height = input("enter your height in m: ")
weight = input("enter your weight in kg: ")

height = float(height)
weight = int(weight)
result= (height ** 2)
BMI = int(weight / result)
print("Your BMI is: ")
print(BMI)

现在它完成了计算..它打印出你的 BMI 是 35 我输入 1.6 的身高和 90 的公斤

但是在它按我想要的方式打印出来之后我看到了这个..

enter your height in m: 1.6
enter your weight in kg: 90
Your BMI is 
35



.
.
.
Checking if you are printing a single number: 
 The BMI as an integer (using meters and kilograms)...
Running some tests on your code:
.
.
.
FFF
======================================================================
FAIL: test_1 (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "main.py", line 70, in test_1
    self.run_test(given_answer=['2', '8'], expected_print='2\n')
  File "main.py", line 67, in run_test
    self.assertEqual(fake_out.getvalue(), expected_print)
AssertionError: 'Your BMI is \n2\n' != '2\n'
- Your BMI is 
  2


======================================================================
FAIL: test_2 (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "main.py", line 73, in test_2
    self.run_test(given_answer=['1.8', '85'], expected_print='26\n')
  File "main.py", line 67, in run_test
    self.assertEqual(fake_out.getvalue(), expected_print)
AssertionError: 'Your BMI is \n26\n' != '26\n'
- Your BMI is 
  26


======================================================================
FAIL: test_3 (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "main.py", line 76, in test_3
    self.run_test(given_answer=['1.6', '90'], expected_print='35\n')
  File "main.py", line 67, in run_test
    self.assertEqual(fake_out.getvalue(), expected_print)
AssertionError: 'Your BMI is \n35\n' != '35\n'
- Your BMI is 
  35


----------------------------------------------------------------------
Ran 3 tests in 0.004s

FAILED (failures=3)
 
KeyboardInterrupt


我不知道这意味着什么,也不知道为什么在正确计算并正确打印出来时这样做???? 请帮助???

您正在使用的测试希望您的印刷品只是计算出的 BMI,因此最后印刷品应该只是

print(BMI)

或者您可以尝试:

print("Your BMI is: ", BMI)

好吧,您向用户提供的信息不仅仅是打印出 BMI,这很好。但在这种情况下,您的测试只需要一个数字作为验证输出。

你的代码是正确的但是。 您可以在代码中进行一些改进:

height = input("enter your height in m: ")
weight = input("enter your weight in kg: ")

height = float(height)
weight = int(weight)
result= (height ** 2)
BMI = int(weight / result)
print("Your BMI is: ")
print(BMI)

至:

height = input("enter your height in m: ")
weight = int(input("enter your weight in kg: "))#Ask user input in `int` form only.

height = float(height)
result= (height ** 2)
BMI = int(weight / result)
#print("Your BMI is: ") Your evaluator(which checks the code) want the output i.e. BMI only. Kindly remove this and it will work
print(BMI)

我建议使用 f-string 格式:

print(f"Your BMI is: {BMI}")

我建议阅读 this,请注意 f-string 格式被认为是最佳做法。


为了让你的输出 int,我建议使用 round built-in 函数:

BMI = round(weight / result)

我不会关注测试的错误消息,而是更多地关注您要实现的目标。

Python 是一种“类型化”语言,这意味着数字和字符串将被 Python 不同地考虑并且有一些限制。

我提供了两种可能的解决方案(使用 Python 3.9,但您可能会遇到不同的行为,具体取决于您的 Python 版本):

print("Your BMI is:", int(weight / result))
print(f"Your BMI is: {int(weight / result)}")
  • 第一个是用逗号告诉Python有两个元素要显示(首先是“您的BMI是:”字符串,然后是计算结果)。
  • 第二个是使用 f-string 方法,该方法允许您使用 {} 在字符串中包含变量或更复杂的 calculations/formulas。

这有点介于答案和评论之间;你没有正确地问你的问题,但是解释你问问题的方式有什么问题(这通常属于评论)可能会让你了解问题的大部分方式,如果不是全部的话。您的教授似乎已经设置了断言测试,您可以在 Python 中执行此操作,以便在输出不是“预期”的情况下引发错误。这对教授很有用,因为如果您没有正确编写程序并给出问题的“正确”答案,他们基本上可以使您的程序“失败”。您的问题不完整,因为虽然这些断言测试不是您提交给教授的代码的一部分,但它们 正在 运行 的一部分,因此您应该已将其作为代码的一部分包含在您的问题中。