>>> for i in range(4):
... print(i, end=" :-) ")
...
0 :-) 1 :-) 2 :-) 3 :-) >>>
我想在3.
之后删除最后一个:-)答案 0 :(得分:0)
我可以想出三种合理的方法来做到这一点。
首先要明确检查您要迭代的值,以确定要传递给end
的{{1}}类型。由于您直接在print
上进行迭代,这非常简单,只需测试最后一个值:
range
我使用“三元”表达式(for i in range(4):
print(i, end=" :-) " if i < 3 else "\n")
)来切换换行符的笑脸以跟随最后一个值。如果您的x if c else y
大小不一样(例如range
),则可以在条件表达式中测试range(x)
。
第二种方法是使用i < x-1
将您的项目组合成一个已经烘焙过的分隔符的字符串,然后将单个字符串传递给str.join
而没有特殊的print
参数:
end
最后一个选项在Python 3中可用(如果使用print(" :-) ".join(str(i) for i in range(4)))
获取{3}}的Python 3版本,则在Python 2的更高版本中可用。使用参数解包将整个from __future__ import print_function
数字一次传递给print
函数,并将笑脸作为range
参数传递而不是print
:
sep
这可能是最好的解决方案。启用此类代码是end
成为Python 3中的函数的主要原因之一(您无法将序列解压缩为Python 2 print(*range(4), sep=" :-) ")
语句的参数)。