1. 程式人生 > >python 求8位各不相同的整數,1357位之和等於2468位之和,且為完全平方數

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]))