python - “TypeError:只能连接列表(不是“int”)来列出“我该如何处理这个
问题描述
我对 python 还很陌生,我正在尝试显示 BMI,但是我收到一条错误消息
TypeError: can only concatenate list (not "int") to list:
我不确定如何显示此列表
def bmi(n):
for x in range(0,n+1):
if len(x)<18.5:
return False
if len(x)>=18.5 and len(x)<=24.9:
return True
if len(x)>=25.0 and len(x)<=29.9:
return False
if len(x)>=30.0:
return False
massindex=[18.5, 24.9, 29.9, 40.0]
for mass in massindex:
print('\nA BMI under', mass, 'is a healthy BMI?', bmi(massindex))
解决方案
我已决定修复您的功能以说明您要实现的目标。我建议的解决方案是遍历 massindex 列表中的不同值并在您的函数中执行比较。此外,给定结果,因为n>=25
和n>=30
都是 False,您可以将其简化为 n>= 25 False,如果结果相同,则不需要这两个标准:
def bmi(n):
if n<18.5:
return False
elif n>=18.5 and n<=24.9:
return True
else: #Any value that doesn't the previous criteria (n > 24.9)
return False
massindex=[18.5, 24.9, 29.9, 40.0]
for mass in massindex:
print('\nA BMI under', mass, 'is a healthy BMI?', bmi(mass))
您的解决方案的主要问题是for
函数内部的循环,不需要它,因为您正在迭代for
函数外部循环中的列表(当您这样做时for mass in massindex:
)。因此,您的函数应获取massindex
列表中的每个值并执行比较以检查它是否应返回 True 或 False。此外,由于您正在比较值,因此该len()
函数是不必要的,因为它返回列表中元素的数量,这对于这种特殊情况没有任何用途。
推荐阅读
- r - 按日期和变量对数据框进行排序
- c# - 在未激活 .NET 3.5 Windows 功能的情况下运行 C# exe
- react-native - 如何在 react-native viewpager 中使用动画更改背景颜色?
- c# - 用粗体标签在短语周围附加单词
- javascript - 并行异步/等待操作
- apache - .htaccess -> Nginx 配置
- html - 有没有办法在 Internet Explorer 中显示 MJPEG 视频流?
- css - 我怎样才能只继承引导预定义类的几个属性?
- reactjs - 错误 500 使用 Axios 将图像上传到 Strapi
- pyspark - 在其他列上按条件限制 pyspark 列?