Python:拆分数字并将其因子化为2

  • 本文关键字:拆分 数字 Python python
  • 更新时间 :
  • 英文 :


此代码用于确定第4次系数为2的数字是否为1。

a = int(input())
terms = 4
result = list(map(lambda x: a ** x, range(terms)))
for i in range(terms):
print(a, "^2 = ", result[i])
if result == 1:
print('True')
else:
print('False')

如果我输入14,这就是结果:

14 ^2 =  1
14 ^2 =  14
14 ^2 =  196
14 ^2 =  2744
False

但我希望它是这样的。

1^2 + 4^2 = 17
1^2 + 7^2 = 50
5^2 + 0^2 = 25
2^2 + 5^2 = 29
False

试试这个:

a = str(int(input()))
def split_and_print(a):
x = [int(y) for y in list(str(a))]
return sum([y**2 for y in x])
def split_sum_print(a):
a_split = list(str(a))
print(' + '.join([x+'^2' for x in a])+ ' = '+str(split_and_print(a)))
return str(split_and_print(a))
n = 4 
for i in range(n):
a = split_sum_print(a)
if a == '1':
print(True)
else:
print(False)

输出:

14
1^2 + 4^2 = 17
1^2 + 7^2 = 50
5^2 + 0^2 = 25
2^2 + 5^2 = 29
False

我做了两个功能,一个负责计算,另一个负责打印。然后将它们组合并使用for循环。针对不同的迭代次数更改n

首先,a = str(int(input()))似乎完全没有必要,因为input()自己返回字符串。

其次,再次将其强制转换为字符串... in str(a):(同样是不必要的)

第三,您正在对某个字符串(在本例中为a)进行迭代,这将产生一个单字符流,但您的代码编写时就好像您期望的是元组一样。。。?

例如

for char in "abc":
print(char)

将打印

a
b
c

您基本上拥有的东西

for a, b in "abc":
print(a, b)

这里应该发生什么?

你希望你的代码会发生什么?

最新更新