Python 将数字中的每个整数按与数字相同的顺序平方
基本上,我想把每个数字都平方成一个整数。例如,984应为816416或405应为16025Python 将数字中的每个整数按与数字相同的顺序平方,python,python-3.x,Python,Python 3.x,基本上,我想把每个数字都平方成一个整数。例如,984应为816416或405应为16025 有趣的是,如果我在第八行写result=result+digital*(10**power),并使power=0,那么我就得到了正确的结果。然而,我觉得这听起来不合逻辑,因为我认为我们应该首先决定是不是数字>9。我的意思是,在if语句之前写result=result+digit*(10**power)对我来说很奇怪。那么,我可以通过编辑表单中的某些部分来共享代码吗?如果没有,您能解释一下为什么我要把它写在
有趣的是,如果我在第八行写
result=result+digital*(10**power)
,并使power=0
,那么我就得到了正确的结果。然而,我觉得这听起来不合逻辑,因为我认为我们应该首先决定是不是数字>9
。我的意思是,在if语句之前写result=result+digit*(10**power)
对我来说很奇怪。那么,我可以通过编辑表单中的某些部分来共享代码吗?如果没有,您能解释一下为什么我要把它写在第八行吗?谢谢。这里的问题是,您在If条件之前平方了数字
变量,如果您的数字小于10,则该条件将失败。例如,对于数字4,您的数字
变量的值将为16,因此幂将为1,然后您的结果
将为160
你需要把它放在if语句前的八行,因为if语句决定你的幂变量,你的值不会移位,而是加到结果
变量中。例如,对于45,您希望输出为1625,但如果在if条件之前调用该语句,则幂为0,因此您将得到185(25+160)而不是1625的结果
x = int(input('num: '))
result = 0
power = -1
while x != 0:
digit = x % 10
digit = digit**2
if digit > 9:
power += 2
else:
power += 1
result = result + digit * (10**power)
x //= 10
print(result)
这应该是可行的。或者,您可以直接操纵输入数字实际上是字符串的性质,您可以开始处理:
>>>平方=[int(x)*int(x)表示输入中的x('输入一个数字:')]
输入一个号码:984
>>>方格
[81, 64, 16]
>>>结果=int(“”.join(map(str,squares)))
>>>结果
816416
我认为将数字转换为字符串以循环数字可能更容易
x = int(input('num: '))
result = 0
power = 0
while x != 0:
digit = x % 10
digit2 = digit**2
result = result + digit2 * (10**power)
if digit2 > 9:
power += 2
else:
power += 1
x //= 10
print(result)