python練手小程式之二
阿新 • • 發佈:2018-12-18
判斷是否為完全數
題目:一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.程式設計 輸入一個數,判斷是否是“完數”。
程式分析:對輸入的數j進行因子分解(這裡的因子不是質因數): (1)初始化一個s變數,將j賦值給s,使用迴圈和取餘來判斷1-j中的i是否能被j整除,如是則使用增量賦值s-=I ,即s = s-i。 (2)最後判斷s是否等於0,6-1-2-3 = 0 和1+2+3 = 6同理,如果是,則返回True,不是,則返回False。 (3)定義一個函式要使用def語句,依次寫出函式名,括號,括號中的引數和冒號,然後在縮寫塊中編寫函式體,函式的返回值用return語句返回。
使用到的基本知識有函式,迴圈,輸入輸出,判斷,取餘。
# -*- coding:utf-8 -*- def judge_perfect_num(j): #寫函式的好處是方便我們重複呼叫相同的一段程式 s = j for i in range(1, j): if j % i == 0: s -= i if s == 0: return True else: return False if __name__ == '__main__': num = input("請輸入需要判斷的數字:") result = judge_perfect_num(num) if result: print "%d是完數"%num else: print "%d不是完數"%num
小球下落
題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
程式分析: 第一次落地經過100(半個來回) 第二次100+100/22(半程為100/2)=100+100 第三次100+100(第二個上升和落下)+100/2/22(第三次高度減半變成了100/2)
第n次100+100+100/2+100/4+…+100/pow(2,n-2) 第n次距離加上100/pow(2,n-2)等於300 第n次距離=300-100/pow(2,n-2)
使用到的基本知識有迴圈,增量賦值。
Sn = 100.0 Hn = Sn / 2 for n in range(2,11): Sn += 2 * Hn Hn /= 2 print 'Total of road is %f' % Sn print 'The tenth is %f meter' % Hn
判斷天數
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。
使用到的基本知識有列表,取餘,輸入輸出,判斷。
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 <= month <= 12:
sum = months[month - 1]
else:
print 'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print 'it is the %dth day.' % sum