python 求8位各不相同的整數,1357位之和等於2468位之和,且為完全平方數
一、解題思路:
二、引用的方法:
1)求平方根並判斷平方根是否為整數:
import math
math.sqrt(64)----但是得到的結果是含有一位小數點得到的結果是8.0
去掉小數點後面的0[str(a),int(a)][int(a)==a]---如果int(a)==a返回的true則結果為int(a);如果返回的false,則結果為str(a)
可以通過type()和isinstance(a,int)來判斷一個數是否為整數
2)將一個數的每位放進列表中:
例如n = 12345
relt = []
for i in str(n):
rslt.append(int(i))
3)判斷是否有重複元素(用到了for else):
n = 34456
rslt = []
for i in str(n):
rslt.append(int(i))
print(rslt)
for i in rslt:
if rslt.count(i)>1:
print('有重複元素')
break
else:
print('沒有重複元素')
4)1356位和2468位之和相等
oddsum=0
evensum=0
for i in range(0,8):
if(i%2==0):
oddsum = oddsum+rslt[i]
else:
evensum = evensum+rslt[i]
print(oddsum)
print(evensum)
if(oddsum==evensum):
print('就是我們需要的數字')
else:
print('不是我們需要的數字')
對於此題目:
1)判斷是否有重複元素的方法(python已經封裝好這樣的方法了):
新建一個set:
set("Hello"),這樣會轉成單個字元的值進行插入,結果是'H','e','l','o','l'因為重複只能插入一次。
sets 支援 x in set、 len(set)、和 for x in set
len(set(str(power))) == 8
求奇數和偶數位之和是否相等
sum(map(int,str(power)[0::2])) == sum(map(int,str(power)[1::2]))