本文将通过5个小练习,来体会程序编写的思路,领略编程方法的魅力。
有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
使用枚举法我们也能解决该问题,在Python中我们用循环和判断来实现。三个数互不相同数学中这样表示:
从1到4分别取出4个数字,当满足以上条件时输出:
"""
有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多
少?
"""
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i != j and i != k and j !=k:
print(i,j,k)
以下为输出结果:
打印出所有的“水仙花数”
“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为满足这个条件:
只要能分别取到这个数的百位、十位、个位的数字,分别进行立方运算后再相加,如果结果等于这个数,那么这个就是水仙花数。
实现代码如下:
"""
打印出所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立
方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5 的三次方
+3的三次方。
"""
for i in range(100,1000):
# 将数字转换成字符串
digit_str = str(i)
# 分别取出百位,十位,个位数字,由于字符串不能进行数值运算,eval函数作用为去除最外层的引号,得到数字
bai = eval(digit_str[0])
shi = eval(digit_str[1])
ge = eval(digit_str[2])
if bai ** 3 + shi ** 3 + ge ** 3 == eval(digit_str):
print(digit_str)
输出结果如下:
求 1+2!+3!+...+20! 的和
这个是一个累乘在累加的过程,首先我们可以先算各个整数阶乘的值,然后逐一相加。Python中的累加或者累乘可以理解为拿个篮子取装苹果,刚开始是空篮子,然后一个一个地往里面放苹果,每次放苹果进去之前,篮子内都放在之前已经装好地苹果;当结束往里面放苹果时,这个篮子就存放着累加后地总苹果数。
实现代码如下:
"""
求 1+2!+3!+...+20! 的和
"""
# 定义s用于存放累加总和,t为每个数字阶乘
s = 0
t = 1
# 从1到21(不包括21)循环20次,每次循环t都存放着上一次循环阶乘结果,s则存放上一次循环的各个阶乘之和
for i in range(1,21):
t *= i
s += t
print(s)
输出结果如下:
一个正整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
我们先用数学的知识分析下这个题目:
这里我们可以用程序循环遍历得到x的值:
"""
一个正整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,
请问该数是多少?
"""
for i in range(2,85):
# i要能被168整除
if 168 % i == 0:
# 得到j得值
j = 168 / i
# 根据之前判断i,j都时偶数,设置i>j是为了防止重复
if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
m = (i + j) / 2
n = (i - j) / 2
x = n * n - 100
print(x)
得到结果如下:
输入某年某月某日,判断这一天是这一年的第几天
判断这是一年的第几天,首先要判断闰年、平年,然后计算天数。这里我们使用一个列表存放平年每月的天数,当输入的是平年,则将当月前面的月数天数相加,再加上剩余天数(即日期);如果是闰年,则将2月的天数改为29,再执行月数的天数相加的操作。
以下为实现代码:
"""
输入某年某月某日,判断这一天是这一年的第几天?
四年一闰,百年不闰,四百年再闰。其简单计算方法:
1、能被4整除而不能被100整除。(如2004年就是闰年,1800年不是。)
2、能被400整除。(如2000年是闰年)
"""
day_str = input('请输入日期(格式:yyyy-mm-dd):')
# 字符串分隔,获取年月日,eval用于取出最外层引号
year = eval(day_str.split('-')[0])
month = eval(day_str.split('-')[1])
day = eval(day_str.split('-')[2])
# 平年每月的天数
days_per_month = [31,28,31,30,31,30,31,31,30,31,30,31]
# 判断是否为闰年,是则将2月份天数修改为29
if (year % 400 == 0) and (year % 4 == 0) and (year % 100 != 0):
days_per_month[1] = 29
# 计算总天数
days = sum(days_per_month[:month-1]) + day
print('{}是今年的第{}天'.format(day_str,days))
实现效果:
网友评论