没有bug队——加贝——Python 练习实例 3,4
3.題目:
一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
程序分析:
假設該數為 x。
1、則:x + 100 = n2, x + 100 + 168 = m2
2、計算等式:m2?- n2?= (m + n)(m - n) = 168
3、設置: m + n = i,m - n = j,i * j =168,i 和 j 至少一個是偶數
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶數,要么都是奇數。
5、從 3 和 4 推導可知道,i 與 j 均是大于等于 2 的偶數。
6、由于 i * j = 168, j>=2,則?1 < i < 168 / 2 + 1。
7、接下來將 i 的所有數字循環計算即可。
注:求模運算,相當于mod,也就是計算除法的余數,比如5%3就得到2。
在if循環中,等號需要是 == 才是等于,不等于是!= ; range(1,3) = 1,2;
由6得1 < i <85,所以取值范圍為(1,85)
代碼:
for i in range(1,85):if 168 % i == 0:j = 168 / i;if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :m = (i + j) / 2n = (i - j) / 2x = n * n - 100print(x)運行結果:
4.題目:
輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于2時需考慮多加一天
注:判斷是否滿足閏年需同時滿足三個條件哦,所以用 and 連接;輸出可以用函數format;
因為python索引從0開始,所以需要索引時 - 1 處理
代碼:
year = int(input('year:\n')) month = int(input('month:\n')) day = int(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 ('日期錯誤') 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 ('{}年{}月{}日是今年的第{}天'.format(year,month,day,sum))?輸出:
?
總結
以上是生活随笔為你收集整理的没有bug队——加贝——Python 练习实例 3,4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的包文件叫什么_python
- 下一篇: websocket python爬虫_p