每天學一點之Python100例(3 4)

2021-08-20 17:55:52 字數 2219 閱讀 8191

每天學一點,形成一種知識複利

問題3:乙個整數,它加上100後是乙個完全平方數,再加上168又是乙個完全平方數,請問該數是多少?

分析:從問題中我們這知道,這題的重點就是「完全平方數」。先了解下什麼是完全平方數。

完全平方數:若乙個數能表示成某乙個整數的平方的形式,則稱這個數為完全平方數。

將問題數學化,設乙個整數為x,加上100後的完全平方數為m的平方,加上168的完全平方數為n的平方,求出這個x。

要獲得m和n,我們就知道math裡的開方函式sqrt

所以m = int(math.sqrt(x + 100)) n = int(math.sqrt(x + 100 +168))

另外再通過完全平方數去做判斷,所以m * m == x + 100 並且 n * n == x + 100 +168

假設這個整數的範圍是50000,我就可以通過迴圈在50000裡找出x;

democode:

import math

def getspecialnum():

for x in range(50000):

m = int(math.sqrt(x + 100))

n = int(math.sqrt(x + 100 + 168))

if (m * m == x + 100) and (n * n == x + 100 + 168):

print("number:",x)

getspecialnum()

問題4:輸入某年某月某日,判斷這一天是這一年的第幾天?

分析:輸入等於input()函式,某年某月某日分3段輸入,分別輸入year,month,day

涉及年的判斷,就要判斷該年是否為閏年;所以如果是閏年,並且月份大於3月時需要多加一天。

democode:

#! /usr/bin/python3

year = int(input("year:\n"))

month = int(input("month:\n"))

day = int(input("day:\n"))

def whichday(year, month, day):

month_days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]

month_each = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31]

if year < 0:

print("year input error!")

return 0

if 0 < month and month < 13:

which_day = month_days[month - 1]

else:

print("month input error!")

return 0

if (year % 400 == 0) or ((year % 4 ==0) and (year % 100 != 0)):

if (month == 2):

if (day < 0) or (day - 1 > month_each[month - 1]):

print("day input error!")

return 0

elif (day < 0) or (day > month_each[month - 1]):

print("day input error!")

return 0

else:

if (day < 0) or (day > month_each[month - 1]):

print("day input error!")

return 0

add_oneday = 0

if (year % 400 == 0) or ((year % 4 ==0) and (year % 100 != 0)):

add_oneday = 1

if (add_oneday == 1 ) and (month > 2):

which_day += 1

which_day += day

return which_day

ret = whichday(year, month, day)

if(ret == 0):

print("input error!!!")

else:

print("the day is %dth day." % ret)

每天學一點之Python100例(13 14)

每天學一點,形成一種知識複利 問題13 十進位制轉二進位制,八進位制,十六進製制 分析 使用對應函式進行轉換 democode usr bin python3 def hexconverter input num int input please input a num print dec num ...

每天學一點之Python100例(19 20)

每天學一點,形成一種知識複利 問題19 楊輝三角定義如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 用python列印出楊輝三角。分析 什麼是楊輝三角?楊輝三角,是二項式係數在三角形中的一種幾何排列 即 1 x 平方展開為1 2x x 2,其係數為1,2...

每天學一點之Python100例(21 22)

每天學一點,形成一種知識複利 問題21 棧的簡單實現 分析 什麼是棧?棧是一種容器,可存入資料元素 訪問元素 刪除元素等。棧的基本操作是乙個封閉的集合。現在給出乙個棧抽象資料型別的描述,其中定義的操作包括 棧的建立 建立乙個空棧 判斷棧是否為空 將元素壓入棧中 進棧或入棧 從棧中彈出元素並將其返回 ...