编程第2题
因子,因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15,那么1和15也是15的因子。1,3,5,15这四个因子是15的所有因子。
完数: 如果一个数等于不含它本身的其他因子之和,则称该数为"完数”。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。
编程实现
输入一个正整数N,输出小于N的所有完数及个数 (个数前加*,例如:*2)。
输入描述
输入一个正整数N
输出描述
输出小于N的所有完数及个数
样例输入:
100
样例输出:
6
28
*2
题目赏析
这个题目也不难,其实就是一个简单的数学问题。用编程解决数学问题很常见,如果理解了这题的数学原理在编程中的体现(即建模,把数学语言通过建立一定的模型方便计算机处理),实现就简单了。比如求一个数的因子,如何求呢?既然是因子肯定能够被整除,因此可以使用%取余运算符,看余数是否为0,为0则除数肯定是这个数的因子。还有就是循环变量 j 不会超过 i 的一半,从而避免了计算 i 的所有因数,因此不用从头遍历到尾。这样遍历一遍就能得到这个数的所有因子。下面的代码使用了一个sum1用来记录对所有因子的求和。
# encoding: utf-8
# author:yangyongzhen
n = input()
n = int(n)
count = 0
for i in range(2,n):
sum1 = 0
for j in range(1,i//2+1):
if i%j == 0:
sum1 += j
if sum1 == i:
print(i)
count += 1
print('*' + str(count))
i//2 表示 i 除以 2 的整数部分(在python2.2及以后的算术运算符“//”来表示整数除法,返回不大于结果的一个最大的整数。而“/”则单纯的表示浮点数除法)。 在该代码中,i//2 用于计算 i 的一半,然后用这个一半作为循环变量 j 的最大值。这样做是为了确保循环变量 j 不会超过 i 的一半,从而避免了计算 i 的所有因数。 此外,sum1用于计算 i 的所有因数之和。当 i 的所有因数之和等于 i 时,i 就是一个完全数。因此,该代码会在 i 的所有因数之和等于 i 时打印 i。
编程第3题
题目描述:
用户输入一个正整致a作为如图半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积 。
输入描述
一个正整数 (作为半圆的直径)
输出描述
图形阴影面积 (保留2位小数)
样例输入:
10
样例输出
25.00
题目赏析
这道题与其说是编程题,不如直接说是数学题,几何题。为啥说数学一定要学好,对编程最有利?因为编程也是逻辑思维,现实世界中遇到的难题,大都需要用到数学,再用计算机建模,设计相应的算法解决问题。
三角形面积公式: S= (ah) /2 (公式中a为三角形的底边,h为底边所对应的高)。
圆形面积公式: S=n*r^2 (公式中r为园的半径,n=3.14(圆周率))。
上面的几何题,一眼就看出来了,阴影部分明显是三角形面积的一半。因此编码的工作最简单。
(注意题目要求,要保留两位小数)
# encoding: utf-8
# author:yangyongzhen
a = input()
a = int(a)
s = 0
s = a*a/4
print("%.2f" %s)
编程第4题
在生活中,为保证信息安全,我们会把重要的信息进行加密后再发送给对方,对方需要通过相同的策路对信息进行解密,才能了解到传递的信息。我个把加密前的信息称为原文,将加密后的信息称为密文。
有这样一种加密的策略:第一次加密策略是将明文中字母a加密为01,b加密为02,c加密为03,以此类推,x加密为24,y加密为25,z加密为26,空格不加密。然后在第一次加密的基出上进行二次加密,第二次加密是将数字0加密为27,数字1加密为28,以此类推,数字8加整为35、数字9加密为36,空格则加密为00。
编程实现
请输入一段明文,按照上述加密策略,输出对应密文。
输入描述
输入一段明文 (只包含小写字母和空格)
输出描述
按照上述加密策略,输出对应密文
样例输入:
ab c
样例输出:
27282729002730
题目赏析
这已经是第四道题目了,发现竟也不难。其实就是一简单的替换。类似于查字典(密文手册),找到对应的依次按要求替换即可。因此,解法如下:
首先设计一字典。设计字典可以每个都手写出来也行,比如设计字典d = {'a':'01','b':'02'},但是这样有点儿繁琐,直接找到规律可以用个循环,就能输出字典了。如何设计输出字典呢?需要有点儿字符的基础知识,小写字母a,b,c,d,......z 对应的十进制,依次是97,98,99....
在python的解释器中可以直接输入chr()函数查看数字对应的ascII字母值,也可以使用ord()函数,输入字符查看其对应的10进制数值。python3 内置函数 hex()、oct()、bin()、chr()、ord().
chr()将Ascii的值转换成对应字符,与之相对应的ord()函数则将字符转换为值。
因此,字典的设计可以使用一个for循环,设计如下:
#设计明文对应的密文字典
d = {}
for i in range(1,27):
#小于10的前面补个0凑够两位
if i < 10:
d[chr(i+96)] = '0'+str(i)
else:
d[chr(i+96)] = str(i)
#打印出字典
print(d)
完整答案如下:
# encoding: utf-8
# author:yangyongzhen
#设计明文对应的密文字典
d = {}
for i in range(1,27):
#小于10的前面补个0凑够两位
if i < 10:
d[chr(i+96)] = '0'+str(i)
else:
d[chr(i+96)] = str(i)
#打印出字典
print(d)
#输入明文内容
ss = input()
s1 = ''
#遍历明文
for c in ss:
#空格不加密
if c ==' ':
s1+= ' '
else:
s1 += d[c]
#至此完成了要求的一级加密
print(s1)
s2 = ''
for i in s1:
if i == ' ':
s2 += '00'
else:
s2 += str(int(i)+27)
#输出最终结果
print(s2)
结果输出
编程第5题
“二十四节气”被列入联合国教科文组织人类非物质文化遗产名录。在国际气象界,这一已有千年历史的时间认知体系被誉为“中国第五大发明”。
春雨惊春清谷天,夏满芒夏暑相连。秋处露秋寒霜降,冬雪雪冬小大寒。二十四节气,在四季轮回流淌,每个节气都有它较为稳定的目子。
下图给出了公历2020年1月25日~2021年1月20日之间,二十四个节气的名称,公历具体日期及汉语拼音的缩写。
输入描述
输入一个日期,介于公历2020年1月25日~2021年1月20日之间。例如:2020年5月2日写为”2020*05*02”
输出描述
如果当天恰好是一个节气,输出这个节气的汉语拼音缩写,如当天不是节气则输出下一个节气的汉语拼音缩写。
样例输入1:
2020*06*21
样例输出1:
XZ
样例输出1说明:6月21日是夏至,汉语拼音缩写是”XZ'
样例输入2:
2020*07*04
样例输出2:
XS
祥例输出2说明:7月4日之后的节气是小暑,汉语拼音缩写是 XS
题目赏析
这道题的解法可以有多种实现,只要达到目的即可。这个题目虽然描述比较长,其实考察的还是基础的查找和比较,主要就是遍历和比较。需要把文字的描述,变成实际的编程去求解出答案。这里给出两种解决。
# encoding: utf-8
# author:yangyongzhen
# blog.csdn.net/qq8864
#names 列表,其中包含了所有节气的汉语拼音缩写
names = ['XH','DH' 'LC','YS','JZ', 'CF', 'OM', 'GY','LX','XM','MZ','XZ','XS','DS','LQ', 'CS','BL', 'QF','HL','SJ' ,'LD','XX','DX','DZ']
#dates列表,其中包含了所有节气的日期。
#这里把日期进行了抽象,实际105可不是1月5号。但用105来表示也不是不可以,方便比较大小来解题即可。
dates = [105,120,204,219,305,320,404,419,505,520,605,621,706,722,807,822,907,922,1008,1023,1107,1122,1207,1221]
#处理输入,把*替换掉并只取后面的日期
day = int(input().replace('*','')[-4:])
#输出日期
print(day)
dates_= [ i for i in dates if i < day]
print(dates_)
if len(dates_)==24:
print('XH')
else :
print(names[len(dates_)-1])
使用 replace() 函数将输入日期中的 * 替换为空字符串,并只取后面的日期。使用 int() 函数将输入日期转换为整数。 然后使用 dates_= [ i for i in dates if i < day] 语句创建了一个新的列表,其中包含了所有小于输入日期的节气日期。
然后使用 len() 函数计算新列表的长度,如果新列表的长度为 24,那么它将输出 "XH",因为这是第一个节气。 否则,输出 names[len(dates_)-1],其中 names[len(dates_)-1] 是新列表中最后一个节气的汉语拼音缩写。因为题目要求是如当天不是节气则输出下一个节气的汉语拼音缩写,dates_中包含了所有小于给出日期的节气,那么自然的dates_的下一个节气就是names[len(dates_)-1]。注意索引是从0开始。
这段代码可以用来计算任何日期的节气。 例如如果输入日期为 "2020*06*21",那么代码将输出 "XZ",因为 6 月 21 日是夏至,夏至是第 21 个节气。 如果输入日期为 "2020*07*04",那么代码将输出 "XS",因为 7 月 4 日是小暑,小暑是第 22 个节气。 如果输入日期为 "2020*07*22",那么代码将输出 "XZ",因为 7 月 22 日是夏至,夏至是第 21 个节气。
方法二:
# encoding: utf-8
# author:yangyongzhen
# blog.csdn.net/qq8864
def get_solar_term(year, month, day):
"""
获取指定日期的节气
Args:
year: 年份
month: 月份
day: 日期
Returns:
节气的汉语拼音缩写
"""
# 获取节气表
solar_term_table = [
('小寒', 'XX', '2020-01-05'),
('大寒', 'DH', '2020-01-20'),
('立春', 'LC', '2020-02-04'),
('雨水', 'YS', '2020-02-19'),
('惊蛰', 'JX', '2020-03-05'),
('春分', 'CF', '2020-03-20'),
('清明', 'QM', '2020-04-04'),
('谷雨', 'GY', '2020-04-19'),
('立夏', 'LX', '2020-05-05'),
('小满', 'XM', '2020-05-20'),
('芒种', 'MZ', '2020-06-05'),
('夏至', 'XZ', '2020-06-21'),
('小暑', 'XS', '2020-07-06'),
('大暑', 'DS', '2020-07-22'),
('立秋', 'LQ', '2020-08-07'),
('处暑', 'CX', '2020-08-22'),
('白露', 'BL', '2020-09-07'),
('秋分', 'QF', '2020-09-22'),
('寒露', 'HL', '2020-10-08'),
('霜降', 'SG', '2020-10-23'),
('立冬', 'LD', '2020-11-07'),
('小雪', 'XS', '2020-11-22'),
('大雪', 'DS', '2020-12-07'),
('冬至', 'DZ', '2020-12-21'),
]
# 遍历节气表,找到第一个日期大于等于输入日期的节气
inpt = '%02d'%(year) + '-' + '%02d'%(month) + '-' + '%02d'%(day)
print(inpt)
for solar_term in solar_term_table:
if solar_term[2] >= inpt:
print(solar_term[2])
return solar_term[1]
# 没有找到节气,返回空字符串
return ''
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
### 一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

### 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

### 三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

### 四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

### 五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

### 六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**