python 随堂练2
打印一定范围内的水仙花数
题目内容:
水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。
例如:153是一个“水仙花数”,因为 153 是个 3位数,而1**3+5**3+3**3==153。
输入一个正整数max,输出100到max之间的所有水仙花数(包括max)。
输入格式:
共一行,为一个正整数。
输出格式:
若干行,从小到大输出水仙花数,一行为一个数。
输入样例:
2500
输出样例:
153
370
371
407
1634
时间限制:1000ms内存限制:32000kb
思路分析
1 将输入的数据的每个位上的数字分别存储(可以考虑将整数转换成字符串)
2 for循环遍历,循环可以直接从153(测试数据所知最小水仙花数)
3 将转换的字符串中的每个字符强制转换成整数型并进行n(字符串的长度)次幂求和
代码实现
num = int(input())
for i in range(153,num+1): //遍历153~num范围内的所有整数st = str(i) //转换成字符串 n = len(st) //i的位数sum = 0 for j in range(n):sum += (int(st[j]))**n //每个位上的数字的n次幂之和if(i == sum): //判断是否是水仙花数print(i)
输入两个字符串,输出两个字符串集合的并集
题目内容:
输入两个字符串,输出两个字符串集合的并集。
为保证输出结果一致,请将集合内元素排序之后再输出,
如对于集合aset,可输出sorted(aset)。
输入格式:
共两行,每一行为一个字符串
输出格式:
共一行,为一个集合
输入样例:
abc
bcd
输出样例:
['a', 'b', 'c', 'd']
时间限制:500ms内存限制:32000kb
思路分析
1 将第一个字符串存入集合中
2 将第二个字符串加入集合中(注意:在这里用update(),表示批量添加数据,add()添加一个数据)
3 用sorted()排序
代码实现
s = set(str(input()))
s.update(str(input()))
print(sorted(s))
与7相关数:
如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数
题目内容:
现在我们给定一个正整数n(n<1000),求所有小于等于n的与7无关的正整数的平方和。
输入格式:
共一行,为一个正整数。
输出格式:
共一行,为一个正整数。
输入样例:
50
输出样例:
31469
时间限制:500ms内存限制:32000kb
思路分析
1 将整数强制转换成字符串,为判断7是否在整数的某一个位上
2 如果能够整除7(对7取余为0) ,continue跳出此循环
3 如果不能被整除7,将通过in来判断字符串'7' 是否 存在 在 整数强制转换成字符串中(注意这里要提前转换,规范if 、 elif 、else语句的语法)
代码实现
n = int(input())
sum = 0
for i in range(n+1):num = str(i)if i%7 == 0:continueelif "7" in num:continueelse:sum += i*i
print(sum)
打印完数
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 6 = 1+2+3。
题目内容:
输入一个正整数n(n<1000),输出1到n之间的所有完数(包括n)。
输入格式:
共一行,为一个正整数。
输出格式:
若干行,从小到大输出完数,一行为一个数。
输入样例:
30
输出样例:
6
28
时间限制:500ms内存限制:32000kb
思路分析
1 用def定义一个完数函数
2 for循环遍历,查找并输出满足条件的完数
代码实现
def wanshu(x):sum = 0for i in range(1,x):if x%i==0:sum += ireturn sum
n = int(input())
for i in range(1,n+1):if i == wanshu(i):print(i)
打印一个n层金字塔
题目内容:
打印一个n层(1<n<20)金字塔,金字塔由“+”构成,塔尖是1个“+”,下一层是3个“+”,居中排列,以此类推。
注意:每一行的+号之后均无空格,最后一行没有空格。
输入格式:
一个正整数n(1<n<20)
输出格式:
一个由+号构成的n层金字塔
输入样例:
3
输出样例:
++++
+++++
时间限制:500ms内存限制:32000kb
思路分析
1 每行输出的空格数为n (总行数) - i(目前所在的行数)
2 每行输出的字符'+'数为 2*i(所在的行数) - 1
注意:上面分析的行数从1开始,代码实现是从0开始,故多加了一个1
代码实现
n = int(input())
for i in range(n):print(' '*(n-i-1)+'+'*(2*i+1))
回文数判断
题目内容:
给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no。
例如12321是回文数,它的个位与万位相同,十位与千位相同。
输入格式:
共一行,为一个5位数。
输出格式:
共一行,yes或no。
输入样例:
12321
输出样例:
yes
时间限制:500ms内存限制:32000kb
思路分析
以字符串的形式输入,并通过for循环来判断左右两边数据是否相同,如果相同则继续,不相同则标记flag = 0(在这里起初想利用列表通过reverse()反转直接判断,但因为赋值语句的数据是同时改变的,因此放弃了此思路)
代码实现
s = str(input())
n = len(s)
flag = 1
for i in range(n):if s[i] == s[n-i-1]:continueelse:flag = 0
if(flag):print('yes')
else:print('no')
列表元素改写
题目内容:
输入一个列表alist,要求列表中的每个元素都为正整数且不超过10;
将列表中的奇数变为它的平方,偶数除以2后打印新的列表(新的列表中所有元素仍都为整数)。
可以使用以下实现列表alist的输入:
- alist=list(map(int,input().split()))
同时为保证输出结果一致,请将集合内元素排序之后再输出。
如对于列表alist,可输出sorted(alist)。
输入格式:
共一行,用来输入列表的元素值,以空格隔开。
输出格式:
共一行,以列表形式打印输出。
输入样例:
1 2 3 4
输出样例:
[1,1,2,9]
时间限制:500ms内存限制:32000kb
思路分析
遍历列表的每个数值,根据判断语句,对列表直接进行修改 ,最后对列表用sort()排序
代码实现
alist = list(map(int,input().split()))
k = 0
for i in alist:if i%2 == 0:alist[k] = i//2else:alist[k] = i*ik += 1
alist.sort()
print(alist)
打印一定范围内的素数
题目内容:
给定一个大于2的正整数n,打印出小于n(不包括n且n不大于100)的所有素数。
要求将符合条件的输出填入一个列表中,打印的结果为该列表。
输入格式:
共一行,为一个大于2的正整数
输出格式:
共一行,为一个列表
输入样例:
10
输出样例:
[2, 3, 5, 7]
时间限制:500ms内存限制:32000kb
思路分析
1 用def定义一个判断素数的函数
2 for循环遍历,将素数添加到列表中
代码实现
def prime(num):for i in range(2,num):if(num%i == 0):return 0return 1
n = int(input())
list = []
for i in range(2,n):if prime(i):list.append(i)
print(list)
猴子吃桃问题
题目内容:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n天(<1<n<11)早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
输入格式:
共一行,为一个大于1小于11的正整数。
输出格式:
共一行,为一个正整数
输入样例:
2
输出样例:
4
时间限制:500ms内存限制:32000kb
思路分析
逆向思考
第一天 : 一个桃子
第二天: (第一天的桃子 + 1) 的2倍
...
第n天: (第n-1天的桃子 + 1) 的2倍
代码实现
n = int(input())
sum = 1
for i in range(1,n):sum = (sum+1)*2
print(sum)
python 随堂练2相关推荐
- python随堂练1
最后一个单词 题目内容: 计算字符串最后一个单词的长度,单词以空格隔开. 可以使用以下语句实现字符串s的输入: 输入格式: s = str(inpput()) 一行字符串,非空,长度小于5000. 输 ...
- Python每日一练0023
问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os > ...
- Python每日一练0004
问题 如何保存迭代对象的最后N个元素 例如保存列表['a', 'b', 'c', 'd']的最后2个元素 或者保存某个迭代器对象的最后5个元素 解决方案 对于列表.元组这样的数据结构,可以使用切片来很 ...
- python 编程一日一练-python每日一练
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...
- python 编程一日一练-Python每日一练0022
问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...
- python 编程一日一练-Python每日一练0013
问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在. 解决方案 使用collections库的ChainMap类,可以快速的将多个d ...
- Python每日一练0018
问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. Python的float类型是存在误差的 >>> a = 1.1 >>> b = 2.2 & ...
- python每日一练名片管理程序_Python每日一练0022
问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...
- Python处理txt文件:多句分行+行首尾添加字符+for循环--Python新手自练系列
Python处理txt文件:多句分行+行首尾添加字符+for循环--Python新手自练系列 总体操作提示: 操作流程图: 准备工作 第一步先对luo.txt进行操作 第二步对yes.txt进行操作 ...
最新文章
- python使用lassocv生成影像组学(radiomic)模型的系数表
- SingleR包注释单细胞数据
- SAP RETAIL 如何根据分配表查到根据它创建的采购订单?
- 【记录】用Javascript实现文本框textarea高度随内容自动适应增长收缩
- iOS 查询数组中的对象
- properties文件不能输入中文
- 配置aconda_centos 安装aconda
- Mysql是否开启binlog日志开启方法
- 网易实战分享|Docker文件系统实战
- EasyHook远程代码注入
- tcl/tk demo
- lex和yacc环境配置
- python创建单例模式_Python单例模式的四种创建方式实例解析
- vue中axios设置表单头_VUE项目axios请求头更改Content-Type操作
- 服务器对操作系统有什么要求,服务器对操作系统有什么要求
- linux下添加用户并且让用户获得root权限
- Java loadlibrary分析及如何unload
- linux自定义服务
- python数学建模|综合评价方法
- 一文读懂参考基因组和基因组注释+最全下载方法