编写打印n次x的Python函数的如下代码是否正确?
你的实现在n为正整数、x为字符串类型的场景下可以正常运行,但存在边界兼容问题和可优化空间:
- 边界参数兼容问题:如果传入的
n为0或负数,你的代码会错误打印1次x。因为Python中字符串与负数相乘会返回空字符串,此时(x+"\n")*(n-1)结果为空,最终拼接后会输出x,不符合「打印0次/负数次无输出」的预期。 - 类型兼容问题:如果传入的
x不是字符串类型(比如整数、浮点数),代码会直接抛出TypeError,因为非字符串类型无法直接和"\n"做拼接操作。
如果希望实现更健壮的版本,可以参考如下写法,兼容非字符串类型的x和边界参数:
def funz(x, n): if n <= 0: return content = str(x) print((content + "\n") * (n - 1) + content)
如果不需要严格避免末尾的多余换行,也可以用更易读的循环写法:
def funz(x, n): for _ in range(n): print(x)
内容的提问来源于stack exchange,提问作者Moly
相关产品推荐
相关产品推荐

