1、3位水仙花數計算
"3位水仙花數”是指一個三位整數,其各位數字的3次方和等于該數本身。
例如:
ABC是一個“3位水仙花數”,則:A的3次方+B的3次方+C的3次方 = ABC。
使用Python,輸出所有的3位水仙花數。
>>> for i in range(100,1000):if pow(i // 100 , 3) + pow(i % 10 , 3) + pow(i // 10 % 10, 3) ==i:print(i,end=" ")
>>> 153 370 371 407
Process finished with exit code 0
水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。與水仙花數類似
同樣的,與水仙花數相似,回文數的判斷方法也是采取相應的方式
2、回文數的判斷
“回文”是指正讀反讀都能讀通的句子。在數學中也有這樣一類數字有這樣的特征,稱為回文數,例如121,25852等等
n=input("請輸入一個數字:")if n == n[::-1]:print("你輸入的數字是回文數")else:print("你輸入的數字不是回文數")
這里是根據回文數的特性:回文數和本身顛倒的數相等,來進行判斷的
3、使用Python判斷是否為閏年
判斷任意年份是否為閏年,需要滿足以下條件中的任意一個:
① 該年份能被 4 整除同時不能被 100 整除;
② 該年份能被400整除。
由于滿足閏年的條件互相有關聯,所以可以使用條件語句來實現,判斷輸入的年份是否為閏年
defleap(a):if a % 4 ==0:if a % 400 ==0:returnTrueelif a % 100 ==0:returnFalseelse:returnTrueelse:returnFalse
n=int(input())if leap(n) ==True:print("{}年是閏年".format(n))else:print("{}年不是閏年".format(n))
4、快樂的數字
首先是一個快樂的數字的定義:
快樂的數字按照如下方式確定:從一個正整數開始,用其每位數的平方之和取代該數,并重復這個過程,直到最后數字要么收斂等于1且一直等于1,要么將無休止地循環下去且最終不會收斂等于1。能夠最終收斂等于1的數就是快樂的數字。使用Python編寫一個算法來確定一個數字是否“快樂”
例如數字 19 就是一個快樂的數字,計算過程如下:????????????????????????????????????????????????????????????????????????????????????????????????
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1 (最終收斂為1)
這里經過了分析,得出了,當循環到數字4時,那么這個數字一定不是快樂數,所以可以得出條件。設置一個循環,當循環到1(快樂數)或者4(不是快樂數)時,就終止循環,得出結果是否為快樂數
def getSumofSquares(num): #快樂數判斷
numStr=str(num)
sum=0for i innumStr:
sum+= int(i)**2
returnsum
n=input()
sumofSqrs=eval(n)while sumofSqrs != 1 and sumofSqrs != 4:
sumofSqrs=getSumofSquares(sumofSqrs)else:if sumofSqrs == 1:print("True")else:print("False")
5、括號配對檢測
用戶輸入一行字符串,其中可能包括小括號 (),請檢查小括號是否配對正確(本題僅限于小括號)
defmatch_parentheses(s):#把一個list當做棧使用
ls =[]
parentheses= "()"
for i inrange(len(s)):
si=s[i]#如果不是括號則繼續
if parentheses.find(si) == -1:continue
#左括號入棧
if si == '(':
ls.append(si)continue
if len(ls) ==0:returnFalse#出棧比較是否匹配
p =ls.pop()if p == '(' and si == ')':continue
else:returnFalseif len(ls) >0:returnFalsereturnTrue
n=input()
result=match_parentheses(n)if result==True:print("配對成功")else:print("配對不成功")
這里是使用list來代替棧的作用,來完成括號匹配的功能
括號匹配問題(所有的括號)算法:
首先設置兩個列表分別存放的是各種括號的開括號和閉括號,然后遍歷給定的字符串,分如下幾種情況:
1.字符串 首字符 出現在閉括號列表中,直接結束,輸出錯誤
2.字符串長度不為偶數,直接結束,輸出錯誤
3.對原始字符串列表化去重,如果去重后的列表長度不為偶數直接結束,輸出錯誤
4.遍歷字符串,將屬于開括號集合的括號加入到列表中,當遇上一個閉括號的時候計算該閉括號在閉括號列表中的索引與
當前列表最后一個開括號在開括號列表中的索引是否一致,一致則繼續,否則直接結束,輸出錯誤
defbracket_mathch(one_str):
tmp_list=[]
open_bracket_list= ['(', '[', '{', '<', '《']
close_bracket_list= [')', ']', '}', '>', '》']
one_str_list=list(one_str)
length=len(one_str_list)
set_list=list(set(one_str_list))
num_list= [one_str_list.count(one) for one inset_list]if one_str[0] inclose_bracket_list:returnFalseelif length % 2 !=0:returnFalseelif len(set_list) % 2 !=0:returnFalseelse:for i inrange(length):if one_str[i] inopen_bracket_list:
tmp_list.append(one_str[i])elif one_str[i] inclose_bracket_list:if close_bracket_list.index(one_str[i]) == open_bracket_list.index(tmp_list[-1]):
tmp_list.pop()else:returnFalsebreak
returnTrue
one_str_list= ['({}', '({[<>]})', '[(){}', '{{{{{', '([{})', '}{[)]']for one_str inone_str_list:ifbracket_mathch(one_str):print(one_str, '括號匹配正確')else:print(one_str, '括號匹配錯誤')
注:這里僅支持輸入純括號,并對其進行括號匹配判斷,沒有實現括號+字符串的括號匹配
6、天天向上的力量
一年365天,以第一天的能力為基數,記為1.0,當好好學習時能力值相比前一天提高1‰,當沒有學習時能力值相比前一天下降1‰。
每天努力和每天放任,一年下來的能力值相差多少呢?
importmath
dayup= math.pow((1.0+0.001),365) #每天提高
daydown = math.pow((1.0-0.001),365) #每天下降
print("每天提高:{:.2f},每天懈怠:{:.2f}".format(dayup,daydown))
>>> 每天提高:1.44,每天懈怠:0.69
這是很基礎的一個調用math庫函數的題,然后使用格式化輸出。
可以看出,經過1年的時間,每天提高一點點竟然達到了 1.69 !!這說明天天向上的力量不可小覷。所以從每天做起,每天改變一點點,日積月累,就會獲得巨大的改變。