如何在Python中从循环中删除尾随逗号?

如何在Python中从循环中删除尾随逗号?,python,python-3.x,Python,Python 3.x,以下是我目前的代码: def main(): for var in range (1, 101): num= IsPrime(var) if num == 'true': print(var, end=', ') IsPrime函数计算函数是否为素数 我需要打印出从1到100的素数,格式为一行,中间有逗号和空格。例如,输出应如下所示: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,

以下是我目前的代码:

def main():
    for var in range (1, 101):
        num= IsPrime(var)
        if num == 'true':
             print(var, end=', ') 
IsPrime函数计算函数是否为素数

我需要打印出从1到100的素数,格式为一行,中间有逗号和空格。例如,输出应如下所示:

2,  3,  5,  7,  11,  13,  17,  19,  23,  29,  31,  37,  41,  43,  47,  53,  59,  61,  67,  71,  73,  79,  83,  89,  97 
我试图运行我的程序,但我总是在97结尾处得到一个逗号。我不知道如何删除逗号,因为它是一个循环,str.rstrip和[:-1]不起作用

我需要使用循环,但我不能使用循环

print('2') 
print(', ', var, end='') 
对于其他素数


我不知道是否有更简单的方法来编写代码,或者我不知道有哪种函数可以正确地执行此操作。

我认为惯用的Python代码如下所示:

print(', '.join([str(x) for x in xrange(1, 101) if IsPrime(x) == 'true'])) 打印(“,”.join([str(x)表示xrange(1101)中的x,如果IsPrime(x)='true'])) (如果
IsPrime
实际返回
True
False
而不是字符串,情况会更好)

这是功能性代码,而不是命令式代码


如果需要命令式代码,则应在每个元素(循环的第一项除外)之前打印
,'
。您可以使用一个布尔变量执行此操作,在看到一个项目后将该变量设置为true。

您可以将所有数字放入一个列表中,然后将所有值合并:

def main():
    primes = []
    for var in range (1, 101):
        if IsPrime(var) == 'true':
            primes.append(var)
        num = IsPrime(var)
    print(', '.join(primes))

如果删除表达式周围的
[…]
,则会更具Python风格。然后,它将只是一个轻量级的生成器,被传递到
join
-方法…@koffein一点也不坏!我喜欢<代码>过滤器我自己,因为它在几乎任何函数编程语言中都能工作。在这种情况下,<代码> IFILTER <代码> >代码>迭代器将是一个需要考虑的函数,因为据我所知<代码>过滤器< /代码>返回一个列表,就像列表中的代码理解>代码>……/代码>上面。我个人不喜欢过滤器,如果我必须创建
lambda
inline。我知道一个函数已经存在了,很好,但在我看来,它比列表理解/生成器更拥挤…@koffein,这实际上会更糟糕,因为python仍然需要为join构建一个列表。当我说
print(',')。join([x代表x在xrange(1010)中,如果IsPrime(x)='true'])
失败了,就像join()需要一个字符串,但得到一个int?因此,它遗漏了一个
str(x)
,不是吗?
IsPrime(var)
应该返回一个布尔值而不是字符串,那么如果
IsPrime(var)
就足以检查了