Python报错:int与str不可相加,求实现n^1到n^high的打印函数
嘿,我来帮你搞定这个问题~
你碰到的unsupported operand type(s) for +: int and str错误,根源很明确:你试图把整数(n**count计算出来的幂值)和字符串' '直接相加,Python可不允许不同类型的数值和字符串这么做哦。
另外看你的代码逻辑,嵌套的while循环也有点混乱——外层循环i < high,内层又用count <= high,这会导致第一次循环就把所有幂次都算完,后续外层循环根本起不到作用,逻辑完全冗余了。
给你两个修正后的方案,按需选择:
方案1:用for循环+列表拼接(更高效简洁)
def print_powers(n, high): # 用列表收集每个幂次的字符串形式 power_strings = [str(n ** exponent) for exponent in range(1, high + 1)] # 用空格连接所有元素并打印 print(' '.join(power_strings)) # 测试调用 print_powers(2, 5)
这个方案用列表推导式生成所有幂次的字符串,再用join拼接,比逐次拼接字符串效率高很多(毕竟字符串是不可变类型,每次拼接都会生成新对象)。
方案2:修正你的while循环写法
如果更习惯用while循环,调整逻辑并修复类型问题:
def print_powers(n, high): result = '' count = 1 while count <= high: # 先把幂次结果转为字符串,再和空格拼接 result += str(n ** count) + ' ' count += 1 # 用strip()去掉末尾多余的空格 print(result.strip()) print_powers(2, 5)
运行这两个代码,都会输出2 4 8 16 32,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Kezia.petch
相关产品推荐
相关产品推荐

