我正在为beginers做一个python练习,遇到了一个与.join()相关的问题

我正在为beginers做一个python练习,遇到了一个与.join()相关的问题,python,python-3.x,Python,Python 3.x,问题是要构建一个计算输入数字平方根的程序,我知道了如何进行操作,但是我得到的输出与任务中给出的格式不同 程序的输出应为: 18,22,24 然而,我的是这样的:[18,22,24] 这是给出的一个示例答案: from math import * C,H = 50,30 def calc(D): D = int(D) return str(int(sqrt((2*C*D)/H))) D = input().split(',') D = list(map(calc,D)) pr

问题是要构建一个计算输入数字平方根的程序,我知道了如何进行操作,但是我得到的输出与任务中给出的格式不同

程序的输出应为: 18,22,24

然而,我的是这样的:[18,22,24]

这是给出的一个示例答案:

from math import *
C,H = 50,30
def calc(D):
    D = int(D)
    return str(int(sqrt((2*C*D)/H)))
D = input().split(',')
D = list(map(calc,D))   
print(",".join(D))
我认为.join()是一个字符串方法,这里的D似乎是一个列表,join方法可以工作

我的答案是:

import math
c=50
h=30
list_d = input('enter').split(',')
list_q = []
for d in list_d:
    d = float(d)
    q = round(math.sqrt((2*c*d)/h))
    list_q.append(q)
print(''.join(list_q))
不知何故,我无法在我的列表上使用join方法,我得到了一个错误,上面写着: 打印(“”.加入(列表) TypeError:序列项0:应为str实例,找到int

这让人困惑


多亏有人能解释一下

问题不在于正在调用的
join
字符串,也不在于列表本身,而在于列表中的值
str.join
希望它的参数是字符串列表,但您正在传递一个整数列表。它不会为你改变它们


幸运的是,您可以很容易地修复这个问题。不要将
q
附加到列表中,而是附加
str(q)
。您也可以看到在示例函数中调用了
str

您需要将数据类型更改为str,而不是int或float。该示例使用map:
list(map(calc,D))
因此没有整数。请注意,随附的答案返回
str(int(…)
,而您只返回
round(math.sqrt(…)
。另外,你还使用了
'.join(…)
,应该是
,'.join
。你们真是帮了大忙!!!!