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整除。
由于满足闰年的条件互相有关联,所以可以使用条件语句来实现,判断输入的年份是否为闰年
def leap(a): if a % 4 == 0: if a % 400 == 0: return True elif a % 100 == 0: return False else: return True else: return False 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=0 for i in numStr: sum += int(i)**2 return sum n = input() sumofSqrs = eval(n) while sumofSqrs != 1 and sumofSqrs != 4: sumofSqrs = getSumofSquares(sumofSqrs) else: if sumofSqrs == 1: print("True") else: print("False")
5、括号配对检测
用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确(本题仅限于小括号)
def match_parentheses(s): # 把一个list当做栈使用 ls = [] parentheses = "()" for i in range(len(s)): si = s[i] # 如果不是括号则继续 if parentheses.find(si) == -1: continue # 左括号入栈 if si == ‘(‘: ls.append(si) continue if len(ls) == 0: return False # 出栈比较是否匹配 p = ls.pop() if p == ‘(‘ and si == ‘)‘: continue else: return False if len(ls) > 0: return False return True n=input() result = match_parentheses(n) if result==True: print("配对成功") else: print("配对不成功")
这里是使用list来代替栈的作用,来完成括号匹配的功能
括号匹配问题(所有的括号)算法:
首先设置两个列表分别存放的是各种括号的开括号和闭括号,然后遍历给定的字符串,分如下几种情况:
1.字符串 首字符 出现在闭括号列表中,直接结束,输出错误
2.字符串长度不为偶数,直接结束,输出错误
3.对原始字符串列表化去重,如果去重后的列表长度不为偶数直接结束,输出错误
4.遍历字符串,将属于开括号集合的括号加入到列表中,当遇上一个闭括号的时候计算该闭括号在闭括号列表中的索引与
当前列表最后一个开括号在开括号列表中的索引是否一致,一致则继续,否则直接结束,输出错误
def bracket_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 in set_list] if one_str[0] in close_bracket_list: return False elif length % 2 != 0: return False elif len(set_list) % 2 != 0: return False else: for i in range(length): if one_str[i] in open_bracket_list: tmp_list.append(one_str[i]) elif one_str[i] in close_bracket_list: if close_bracket_list.index(one_str[i]) == open_bracket_list.index(tmp_list[-1]): tmp_list.pop() else: return False break return True one_str_list = [‘({}‘, ‘({[<>]})‘, ‘[(){}‘, ‘{{{{{‘, ‘([{})‘, ‘}{[)]‘] for one_str in one_str_list: if bracket_mathch(one_str): print(one_str, ‘括号匹配正确‘) else: print(one_str, ‘括号匹配错误‘)
注:这里仅支持输入纯括号,并对其进行括号匹配判断,没有实现括号+字符串的括号匹配
6、天天向上的力量
一年365天,以第一天的能力为基数,记为1.0,当好好学习时能力值相比前一天提高1‰,当没有学习时能力值相比前一天下降1‰。
每天努力和每天放任,一年下来的能力值相差多少呢?
import math 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 !!这说明天天向上的力量不可小觑。所以从每天做起,每天改变一点点,日积月累,就会获得巨大的改变。