首页 > 解决方案 > “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))

标签: pythonlistfor-looppycharm

解决方案


我已决定修复您的功能以说明您要实现的目标。我建议的解决方案是遍历 massindex 列表中的不同值并在您的函数中执行比较。此外,给定结果,因为n>=25n>=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()函数是不必要的,因为它返回列表中元素的数量,这对于这种特殊情况没有任何用途。


推荐阅读