Python实现数字每位平方运算?示例代码无法运行求助
问题分析与代码修正
咱们先拆解下你的代码里的几个核心问题:
- 你传入的
num是整数类型(9119),但整数根本没有split()方法——这个方法是字符串专属的,所以代码运行第一步就会抛出错误。 - 就算把数字转成字符串,
split()默认是按空格分割,而你的数字是连续无空格的,完全没法用这个方法拆分出单个数字。 - 就算拿到了单个数字字符,它也是字符串类型,直接做
**2幂运算会报错,必须先转成整数才行。 - 你的代码是逐个打印平方结果,但需求是把这些结果拼接成一个完整的字符串输出(比如811181),而不是分开打印。
修正后的代码
def sq(num): # 先把整数转成字符串,才能逐个遍历每个数字字符 num_str = str(num) result = "" for char in num_str: # 字符转整数→计算平方→转回字符串→拼接到结果中 squared = str(int(char) ** 2) result += squared # 输出最终拼接好的结果 print(result) num = 9119 sq(num)
代码逻辑解释
- 转字符串遍历:
str(num)把整数9119转成字符串"9119",这样就能逐个取出每个数字字符('9'、'1'、'1'、'9')。 - 平方计算与拼接:遍历每个字符时,先转成整数计算平方,再转回字符串拼接到
result变量里,确保最终是连续的字符串。 - 输出结果:循环结束后,
result就是需求的"811181",直接打印即可。
如果想让代码更简洁,还可以用列表推导式一行实现:
def sq(num): print(''.join(str(int(c)**2) for c in str(num))) sq(9119)
内容的提问来源于stack exchange,提问作者Abhiseck
相关产品推荐
相关产品推荐

