公众号后台回复“图书“,了解更多号主新书内容作者:Yang来源:Python数据科学修炼之路

先来个L3级的开胃菜···

Python

Question 11

Level 3级

1

问题:您需要编写一个程序来按升序对(名称,年龄,身高)元组进行排序,

其中名称是字符串,年龄和身高是数字。元组由控制台输入。

排序标准为:

1:根据名称排序;

2:然后根据年龄排序;

3:然后按分数排序。

优先级是名称>年龄>得分。

如果以下元组作为该程序的输入给出:

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启用多个排序键。

Solution

from operator import itemgetter, attrgetter
l = []
N=0
while N<5:s = input()l.append(tuple(s.split(",")))N+=1
print(sorted(l,key=itemgetter(0,1,2)))
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')]

Python

Question 12

Level 2级

1

问题:编写一个程序,该程序接受行序列作为输入,并在将句子中的所有字符都大写之后打印行。

假定向程序提供了以下输入:Hello world Practice,

然后,输出应为:HELLO WORLD PRACTICE

输入三次后退出。

Solution

def fn12():n=1m=3while n<=m:s=input("请输入序列:")if s:print(s.upper())print("共%d次你还能输入%d次"%(m,3-n))else:breakn+=1
>>>fn12()
请输入序列:Hello world Practice
HELLO WORLD PRACTICE
共3次你还能输入2次
请输入序列:You are right
YOU ARE RIGHT
共3次你还能输入1次
请输入序列:good boy
GOOD BOY
共3次你还能输入0次

Python

Question 13

Level 2级

1

问题:编写一个程序,该程序接受以逗号分隔的4位二进制数字序列作为输入,

然后检查它们是否可被5整除。可被5整除的数字将以逗号分隔的顺序打印。

示例:0100,0011,1010,1001

然后输出应为:1010

注意:假设数据是由控制台输入的。

Solution

values=[]
def fn13():items=[x for x in input("请输入4位二进制的数字序列:").split(',')]for p in items:intp = int(p, 2)if not intp%5:values.append(p)value=','.join(values)return value
>>>fn13()
请输入4位二进制的数字序列:0100,0011,1010,1001
'1010'

Python

Question 14

Level 2级

1

编写一个程序,查找所有介于1000和3000之间的数字(均包括在内),

以使该数字的每个数字均为偶数。所获得的数字应以逗号分隔的顺序打印在一行上。

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

list1=[]
for i in range(1000,3001):lt=str(i)if (int(lt[0])%2==0) & (int(lt[1])%2==0) &  (int(lt[2])%2==0) &  (int(lt[3])%2==0):list1.append(lt)
print(",".join(list1))
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

Python

Question 15

Level 2级

1

编写一个接受句子并计算字母和数字数量的程序。

假设将以下输入提供给程序:hello world!123

然后,输出应为:字母10位3

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

dict1={"num":0,"zimu":0}
for i in s:if i.isdigit():dict1["num"]+=1elif i.isalpha():dict1["zimu"]+=1>>>print("字母有%d个"%dict1["zimu"])
字母有10个>>>print("数字有{}个".format(dict1["num"]))
数字有3个

Python

Question 16

Level 3级

1

问题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码是否有效。以下是检查密码的标准:

[a-z]之间至少1个字母

[0-9]之间至少1个数字

[A-Z]之间至少1个字母

[$#@]中的至少1个字符

交易密码的最小长度:6

交易密码的最大长度:12您的程序应接受一系列逗号分隔的密码,并将根据上述条件进行检查。

符合条件的密码将被打印,每个密码之间用逗号分隔。

示例如果将以下密码作为程序输入:ABd1234@1,aF1#,2w3E*,2We3345

然后,程序的输出应为:ABd1234@1

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

import re
value = []
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))

如果再增加一些交互功能,密码小于6位或者大于12位要重新输入,该如何实现?

import re
while True:lower=0upper=0num=0fuhao=0s=input("请输入您的密码:")if 6>len(s) or len(s)>12:print("请重新输入:")continueelse:for i in s:if i.islower():lower+=1elif i.isupper():upper+=1elif i.isnumeric():num+=1elif re.search("[$#@]",i):fuhao+=1else:passif lower>=1 and upper>=1 and num>=1 and fuhao>=1:print("您的密码是:",s)break

Python

Question 17

Level 2级

1

问题:编写一个接受句子的程序,并计算大写字母和小写字母的数量。

假设向程序提供了以下输入:Hello World!然后,输出应为:UPPER CASE 2 LOWER CASE 8

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

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"])
Hello World!
UPPER CASE 2
LOWER CASE 8

Python

Question 18

Level 2级

1

问题:编写一个程序,以给定的数字作为a的值来计算a + aa + aaa + aaaa的值。

假设将以下输入提供给程序:9然后,输出应为:11106

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

def fn18(n):return n+11*n+111*n+1111*n===测试===
>>>fn18(9)
11106

这样是实现了,但是可以更智能一点,如果要算或者?8+88+···+888888或者6+66+···+6666666666呢?我们只要定义一个函数,传入2各参数(一个空值位数,一个控制值)即可。

def fn18(n,m):sum_1=0for i in range(1,n+1):s=int("".join(["1"]*i))print(s*m)  #打印每轮的值sum_1+=s*mreturn sum_1===测试===
>>>fn18(4,9)
9
99
999
9999
结果:11106
>>>fn18(6,8)
8
88
888
8888
88888
888888
结果:987648

Python

Question19

Level 2级

1

使用列表生成式将列表中的每个奇数遍历。 该列表由一系列逗号分隔的数字输入。

假设将以下输入提供给程序:1,2,3,4,5,6,7,8,9然后,输出应为:1,3,5,7,9

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

inp=input("请输入一串数字:")
[int(i) for i in inp.split(",") if int(i)%2!=0 ]
---返回值:
请输入一串数字:1,2,3,4,5,6,7,8,9
[1, 3, 5, 7, 9]

Python

Question 20

Level 2级

1

问题:编写一个程序,该程序根据控制台输入的交易日志来计算银行帐户的净额。

事务日志格式如下所示:D 100 W 200

D表示存款,W表示提款。

假设将以下输入提供给程序:D 300 D 300 W 200 D 100然后,输出应为:500

可以适当添加一些交互功能。

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

sum_1=0
while sum_1>=0:n=input("存钱请输入Dxx,取钱请输入Wxx: ")if n.startswith("D"):inp=int(n[1:])sum_1+=inpelif n.startswith("W"):out=int(n[1:])sum_1-=outelse:print("输入不合法!")print("您当前的余额为:%d"%(sum_1)) in2=input("要继续吗?  YES/NO ")if in2=="NO":break
==============测试============
存钱请输入Dxx,取钱请输入Wxx: D300
您当前的余额为:300
要继续吗?  YES/NO Y
存钱请输入Dxx,取钱请输入Wxx: U
输入不合法!
您当前的余额为:300
要继续吗?  YES/NO Y
存钱请输入Dxx,取钱请输入Wxx: D400
您当前的余额为:700
要继续吗?  YES/NO Y
存钱请输入Dxx,取钱请输入Wxx: W800
您当前的余额为:-100
要继续吗?  YES/NO Y

参考链接:

https://github.com/zhiwehu/Python-programming-exercises

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

【提升coding能力】100道Python练习题11-20相关推荐

  1. 100道Python练习题,看看你能会几题!?

    今天给大家带来100道Python练习题,附上参考答案!希望能够帮到大家!

  2. 100+ 道Python练习题

    原贴博主很久没更新了,我在他的基础上继续翻译,仅供自己学习交流需要. 原贴地址:https://blog.csdn.net/weixin_40547993/article/details/889280 ...

  3. python必背100代码-这 100 道 Python 题,拿去刷!!!

    2020年,学 Python 还有价值吗? 根据 2020 年 2 月的 TIOBE 编程语言排行榜显示,Python仍然稳居第三位. 此排行榜排名基于互联网上有经验的程序员. 课程和第三方厂商的数量 ...

  4. python入门100例题-这 100 道 Python 题,拿去刷!!!

    2020年,学 Python 还有价值吗? 根据 2020 年 2 月的 TIOBE 编程语言排行榜显示,Python仍然稳居第三位. 此排行榜排名基于互联网上有经验的程序员. 课程和第三方厂商的数量 ...

  5. 100道Python编程练习题

    100+ Python challenging programming exercise 100道Python编程练习题,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的 ...

  6. [转载] Python水平自测!100道经典练习题.pdf(附答案)

    参考链接: Python运算子 自学Python最令人头痛的地方,不是学不进去,而是不知道自己学完之后是什么样的水平!篇幅原因本文只分享了前10道练习题. 公号文章处放了前36道题,大家可以自行查阅: ...

  7. 130道Python练习题,涵盖基础内容的方方面面

    1.数据类型篇 1.1 基本数据类型 1.1.1 逻辑推理练习(类型转换) 1.1.1.1 bool函数转换规则 1.1.1.2 int("3.42") 为什么会报错 1.1.1. ...

  8. 加班熬夜整理出来的100道Python基础题,学到就是赚到!超级详细

    这不每天晚上下班了无聊,就给大家整理出来了一百道Python必刷题,基本上都做的出来的话,基础彻底没问题了~ 大致涉及到的知识点有: 基础语法 变量类型 运算符 条件判断 循环 字符串 列表 元组 字 ...

  9. 8道python练习题,能做出来的没几个

    变量的定义 程序就是用来处理数据的,而变量就是用来存储数据的 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不 ...

最新文章

  1. ​不唯SCI,博士生要怎么培养?当我们反对SCI至上时,我们到底在反对什么?...
  2. vue 热更新无反应_不吹不黑谈谈 vue 的 SFC 和 template
  3. Web框架之Django_10 重要组件(Auth模块)
  4. wordcount linux java_linux下在eclipse上运行hadoop自带例子wordcount
  5. 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算
  6. @ManyToOne和@OneToMany 注解
  7. openssl以及openssh升级
  8. mybatis获取mysql自增主键_Mybatis获取数据库自增主键
  9. 概率软逻辑(PSL,Probabilistic soft logic)通用(可处理中文)版本
  10. 十分钟理解Redux中间件
  11. resetuser.php,Php开发过程中不常碰到的error (2.25更新)
  12. 朋友买的115资源系统源码
  13. java实现-强智教务系统API文档-全部java封装
  14. Tailscale组成局域网(以文明6联机为例)
  15. Android应用开发编译框架流程与IDE及Gradle概要
  16. spring之aop(前置通知,后置通知,环绕通知,过滤通知,异常通知)
  17. 路边拾遗之其他模块(struct/csv/xlwt/smtp)
  18. linux如何查看服务器的型号和常用信息
  19. 博科光纤交换机常用命令
  20. 我国数据安全法详细解读

热门文章

  1. 住房公积金联名卡密码修改步骤
  2. inno setup 自定义生成的卸载程序
  3. 思泰克IPO过会:上半年营收1.9亿 元禾璞华与赛富金钻是股东
  4. OS和Linux笔记
  5. Redis总结_实战篇
  6. IDEA 报错 Cannot connect to the Maven process. If the problem persists, check the jdk.
  7. 数字IC设计----MOS管与逻辑门
  8. WIN API编程的详细介绍
  9. 黄金连分数(python)
  10. Word中的SVG格式的矢量插图问题