Python 重解零基础100题(2)
第11题
难度:2级
问题:编写一个程序,接收一系列以逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除,可被5整除的数字将以逗号分隔的顺序打印。
例:0100,0011,1010,1001
那么输出应该是:1010
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
value = []
print('请输入逗号分隔的4位二进制数:')
items=[x for x in input().split(',')]
for p in items:intp = int(p, 2)# print(intp)if not intp%5:value.append(p)
print (','.join(value))
我的答案:
>>> print(','.join([_ for _ in input('输入一组二制数:').split(',') if int(_,2)%5==0]))
0100,0011,1010,1001
1010
>>>
>>> print(','.join([_ for _ in input('输入一组二制数:').split(',') if int(_,2)%5==0]))
0101,0111,1010,1111
0101,1010,1111
>>>
第12题
难度:2级
问题:编写一个程序,找到1000到3000之间并且所有位数均为偶数的所有数字,比如2000,2002等;获得的数字都以逗号分隔的顺序,打印在一行上。
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
values = []
for i in range(1000, 3001):s = str(i)if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):values.append(s)
print (",".join(values))
我的答案:
>>> [i for i in range(1000,3001) if all([int(_)%2==0 for _ in str(i)])]
[2000, 2002, 2004, 2006, 2008, 2020, 2022, 2024, 2026, 2028, 2040, 2042,2044, 2046, 2048, 2060, 2062, 2064, 2066, 2068, 2080, 2082, 2084, 2086,2088, 2200, 2202, 2204, 2206, 2208, 2220, 2222, 2224, 2226, 2228, 2240,2242, 2244, 2246, 2248, 2260, 2262, 2264, 2266, 2268, 2280, 2282, 2284,2286, 2288, 2400, 2402, 2404, 2406, 2408, 2420, 2422, 2424, 2426, 2428,2440, 2442, 2444, 2446, 2448, 2460, 2462, 2464, 2466, 2468, 2480, 2482,2484, 2486, 2488, 2600, 2602, 2604, 2606, 2608, 2620, 2622, 2624, 2626,2628, 2640, 2642, 2644, 2646, 2648, 2660, 2662, 2664, 2666, 2668, 2680,2682, 2684, 2686, 2688, 2800, 2802, 2804, 2806, 2808, 2820, 2822, 2824,2826, 2828, 2840, 2842, 2844, 2846, 2848, 2860, 2862, 2864, 2866, 2868,2880, 2882, 2884, 2886, 2888]
>>>
第13题
难度:2级
问题:编写一个接受句子并计算字母和数字的程序。
假设程序输入:Hello world! 123
则输出应该是:字母10 数字3
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
print('请输入:')
s = input()
d={"DIGITS":0, "LETTERS":0}
for c in s:if c.isdigit():d["DIGITS"]+=1elif c.isalpha():d["LETTERS"]+=1else:pass
print ("字母", d["LETTERS"])
print ("数字", d["DIGITS"])
我的答案:
>>> s='Hello world! 123'
>>> sum(1 for _ in s if _.isalpha())
10
>>> sum(1 for _ in s if _.isnumeric())
3
>>> # 输入输出格式,略
第14题
难度:2级
问题:编写一个接收句子的程序,并计算大写字母和小写字母的数量。
假设为程序提供了以下输入:Hello world!
则输出应该是:UPPER CASE 1;LOWER CASE 9
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
print('请输入:')
s = input()
d={"UPPER CASE":0, "LOWER CASE":0}
for c in s:if c.isupper():d["UPPER CASE"]+=1elif c.islower():d["LOWER CASE"]+=1else:pass
print ("UPPER CASE", d["UPPER CASE"])
print ("LOWER CASE", d["LOWER CASE"])
我的答案:
>>> s='Hello world!'
>>> sum(1 for _ in s if _.isupper())
1
>>> sum(1 for _ in s if _.islower())
9
>>> # 输入输出格式,略
第15题
难度:2级
问题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。
假设为程序提供了以下输入:9;输出应该是:11106
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
print('请输入一个数字:')
a = input()
n1 = int( "%s" % a )
n2 = int( "%s%s" % (a,a) )
n3 = int( "%s%s%s" % (a,a,a) )
n4 = int( "%s%s%s%s" % (a,a,a,a) )
print (n1+n2+n3+n4)
我的答案:
>>> eval('a+aa+aaa+aaaa'.replace('a',input('请输入一位数字:')))
请输入一位数字:9
11106
>>>
第16题
难度:2级
问题:使用列表推导输出列表中的每个奇数,该列表由一系列逗号分隔的数字输入。
假设程序输入:1,2,3,4,5,6,7,8,9
输出应该是:1,3,5,7,9
print("输入:")
values = input()
numbers = [x for x in values.split(",") if int(x)%2!=0]
print (",".join(numbers))
略!
第17题
难度:2级
问题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。事务日志格式如下所示:
D 100 W 200
D表示存款,而W表示提款。
假设向程序依次输入:D 300;D 300;W 200;D 100;
则输出应该为:500
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
netAmount = 0
while True:print("请输入:")s = input()if not s:breakvalues = s.split(" ")operation = values[0]amount = int(values[1])if operation=="D":netAmount+=amountelif operation=="W":netAmount-=amountelse:pass
print (netAmount)
略!
第18题
难度:3级
问题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码有效性。
以下是检查密码的标准:
1 [a-z]之间至少有1个字母
2 [0-9]之间至少有1个数字
3 [A-Z]之间至少有一个字母
4 [$#@]中至少有1个字符
5 最短交易密码长度:6
6 交易密码的最大长度:12
您的程序接收一系列逗号分隔的密码,并将根据上述标准进行检查,将打印符合条件的密码,每个密码用逗号分隔。
例:如果以下密码作为程序的输入:ABd1234@1,a F1#,2w3E*,2We3345
则程序的输出应该是:ABd1234@1
import re
value = []
print("请输入:")
items=[x for x in input().split(',')]
for p in items:if len(p)<6 or len(p)>12:continueelse:passif not re.search("[a-z]",p):continueelif not re.search("[0-9]",p):continueelif not re.search("[A-Z]",p):continueelif not re.search("[$#@]",p):continueelif re.search("\s",p):continueelse:passvalue.append(p)
print (",".join(value))
我的答案:
>>> import re
>>> pat=['[a-z]','[0-9]','[A-Z]','[$#@]']
>>> password=['ABd1234@1','a F1#','2w3E*','2We3345']
>>> [s for s in password if 6<=len(s)<=12 and all([re.findall(p,s) for p in pat])]
['ABd1234@1']
>>> # 输入输出格式 略
第19题
难度:3级
问题:您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字, 元组由控制台输入。
排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是name > age > 得分。
如果给出以下元组作为程序的输入:Tom,19,80;John,20,90;Jony,17,91;Jony,17,93;Json,21,85
然后,程序的输出应该是:[('John','20','90'),('Jony','17','91'),('Jony','17','93'),('Json','21 ','85'),('Tom','19','80')]
提示:使用itemgetter来启用多个排序键。
from operator import itemgetter, attrgetter
l = []
print("请输入:")
while True:s = input()if not s:breakl.append(tuple(s.split(",")))
print (sorted(l, key=itemgetter(0,1,2)))
我的答案:
>>> s='Tom,19,80;John,20,90;Jony,17,91;Jony,17,93;Json,21,85'
>>> t=[tuple(t.split(',')) for t in s.split(';')]
>>> t
[('Tom', '19', '80'), ('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('Json', '21', '85')]
>>> t=[(i[0],int(i[1]),int(i[2])) for i in t]
>>> t
[('Tom', 19, 80), ('John', 20, 90), ('Jony', 17, 91), ('Jony', 17, 93), ('Json', 21, 85)]
>>> sorted(t,key=lambda x:(x[0],x[1],x[2]))
[('John', 20, 90), ('Jony', 17, 91), ('Jony', 17, 93), ('Json', 21, 85), ('Tom', 19, 80)]
>>>
>>> # 合并成一行:
>>> sorted([(i[0],int(i[1]),int(i[2])) for i in [tuple(t.split(',')) for t in s.split(';')]],key=lambda x:(x[0],x[1],x[2]))
[('John', 20, 90), ('Jony', 17, 91), ('Jony', 17, 93), ('Json', 21, 85), ('Tom', 19, 80)]
>>>
第20题
难度:3级
问题:使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。
提示:考虑使用yield。
def putNumbers(n):i = 0while i<n:j=ii=i+1if j%7==0:yield j
for i in putNumbers(100):print (i)
略!
Python 重解零基础100题(2)相关推荐
- [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解
一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...
- python快速编程入门课后程序题答案-Python编程从零基础到项目实战 完整PPT+习题答案...
Python编程从零基础到项目实战是一本介绍Python相关知识的Python基础教程,内容涉及算法.Python数据分析.图形处理.Web开发.科学计算.项目管理.人工智能.Python爬虫等.其中 ...
- [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...
- 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...
Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...
- 《算法零基础100讲》(第30讲) 概率与统计
文章目录 零.写在前面 一.概念定义 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面 这是<算法零基础100讲> 专栏打卡学习的第 30 天了.如果 ...
- 《算法零基础100讲》(第42讲) 位运算 (位与) 入门
文章目录 零.写在前面 一.概念定义 1.位与的定义 2.位与运算符的简单应用 1)奇偶性判定 2)取末五位 3)消除末尾五位 4)2的幂判定 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 ...
- 《算法零基础100讲》(第20讲) 进制转换(二) - 进阶
文章目录 零.写在前面 一.概念定义 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面 这是<算法零基础100讲> 专栏打卡学习的第 20 天了.如果 ...
- 《算法零基础100讲》(第2讲) 数列
文章目录 零.写在前面 一.概念定义 1.等差数列 2.等比数列 3.斐波那契数列 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面 这是<算法零基础100 ...
- 《算法零基础100讲》(第53讲) 区间问题(二) 区间的并集和交集
文章目录 零.写在前面 一.概念定义 1.区间的相交判定 2.区间的交集 3.区间的并集 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面 这是<算法零基础 ...
最新文章
- 荣耀的鸿蒙系统是什么样的,核心还是备胎?华为鸿蒙系统究竟怎么样了?
- 阿里移动|《蚂蚁金服移动端高可用技术实践》
- php临时文件夹,php-fpm临时文件路径问题【Sytemd PrivateTmp】
- Spire.XLS试用手记
- ZOJ -3203 三分+数学
- 引号吃掉了我的数据~~~
- rfid 标签内存_RFID有源与无源的区别与联系
- java连接hive代码_Hive:用Java代码通过JDBC连接Hiveserver
- Linux下双网卡绑定bond0
- android 内核裁剪概述,Android内核的编译与裁剪
- Cocos2d-x属性变化动作
- Three.js – Building a Cube with different mater...
- GCD and LCM HDU 4497 数论
- Windows查看快捷键占用情况
- 自己动手来做一寸或两寸照片(使用工具)
- 短视频素材:17个视频网站,涨粉必上热门
- opencv答题卡识别
- HFI脉振方波高频注入代码 增强滑膜esmo代码 配套有文档
- javascript检测浏览器是否需要升级版本和提示
- R语言学习 文本处理
热门文章
- Linux的markdown笔记软件,Markdown工具满天飞,哪一款适合用印象笔记的你?
- 混合硬盘计算机,什么是混合硬盘 什么是hhd硬盘?
- 无人机飞控平台ArduPilot源码入门教程 — 简介
- 最好听的男孩名字及1000个好听的女孩的名字
- 输入框限制不允许输入中文
- 2021-05-11 MongoDB面试题 MySQL与MongoDB之间最基本的差别是什么
- DNS工作原理及其过程
- 不同平方的电线都能带动哪些家用电器
- 无法打开登录所请求的数据库 。登录失败。用户*登录失败。解决办法
- mysql 5.7 lbs_使用mysql来实现lbs(地理位置服务)功能