这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握Python的其他两种数据类型——列表和字典。今天我就给大家介绍两个关于Python基本数据类型的实战项目。

1.字符串趣味实战

题目:替换1-20内的数字,3的倍数和5的倍数用不同的数字代替。列出1到20的数字,若是3的倍数就用apple代替,若是5的倍数就用orange代替,若既是3的倍数又是5的倍数就用appleorange代替。

代码思路:

第一种普通解法,循环1-20,然后用多个if/else进行判断:

def replace_num(i):if i%3 == 0 and i%5 ==0:return "banana"if i%3 ==0:return 'apple'if i%5 ==0:return 'orange'else:return ifor i in range(1,20):print(replace_num(i))

第二种牛逼解法:巧妙的利用列表切片

'apple'[i%3*len('apple')::]+'orange'[i%5*len('orange')::]or i

先说一下这道题的这种解法,犹如天外有天,令人拍案叫绝!

慢动作分解1:

print ('apple'[1::])
>>'pple' 表示从第2个位置开始切片

慢动作分解2:

既然明白了上面的,来一个稍微复杂一点的
>>print ('apple'[1*5::])为空
为啥因为1*5是5,也就是要从第6个字符开始,apple一共就5个字符,所以输出为空

慢动作分解3:

for i in range(1,10):
print ('apple'[i%3::])
>>
pple
ple
apple
pple
ple
apple
pple
ple
apple

会发现只有3的倍数的地方会出现完整的apple,其他地方都是残缺,但是我们怎么把非3的倍数的地方变成空呢,简单乘以一个偏移量,这招对3的倍数没有任何影响,但是对于其他的非3的倍数有很大的影响。

慢动作分解4:

for i in range(1,10):
print ('apple'[i%3*len('apple')::])
>>
apple
apple
apple

这个时候虽然把非3的过滤掉了,但是我们要输出数字啊,怎么办呢?这里又用了一个非常巧妙的or for i in range(1,20):print(‘apple’[i%3*len(‘apple’)::]ori)

这道题的技巧性非常高,而且很巧妙,希望零基础的同学仔细看明白每一步!

2. 列表、字典——综合实战应用

题目:寻找班级名字最长的人

现有一字符串人名:

names=(' Kunpen Ji, Li XIAO, Caron Li, Donl SHI, Ji ZHAO,Fia YUAN Y, Weue
DING, Xiu XU, Haiying WANG, Hai LIN,Jey JIANG, Joson WANG E, Aiyang ZHANG,Hay
MENG, Jak ZHANG E, Chang Zhang, Coro ZHANG')

需要实现下面3个要求:

(1):排序,按照名字A-Z排序

(2):找出里面姓“ZHANG”的人数

(3):找出名字里面最长的人

代码思路:

分析问题1:

首先我们要做的是对字符串进行分割去掉‘,’,然后就变成了一个长的列表,最后对列表进行排序(注意名字前后有多余空格去掉),第一个问题就解决了。

def sort_names(names):
return (sorted([name.strip()for name in names.split(',')]))

分析问题2:

我们需要找出姓“ZHANG”,因为名字里面有英文名字和中文名字,有的后面还跟E/Y,所以我们先定义一个函数,从分割后的新名字列表取出每一个名字,然后解析、翻转,用推导列表形成一个新的名字列表,然后再用字符串里的.startswitch(‘ZHANG’)取出符合的名字。

def get_chinese_names(names):chinese_names=[]for name in sort_names(names):if len(name)>=2:first_name=name.split()[0].capitalize()last_name=name.split()[1].capitalize()chinese_names.append(last_name+' '+first_name)else:chinese_names.append(name)list_temp = []for i in chinese_names:if i.startswith('Zhang'):list_temp.append(i)print("姓'ZHANG'的有%s个,分别是:%s" % (len(list_temp), list_temp))return chinese_names

分析问题3:

找出名字里面字符串最长的人,我们先定义一个函数,然后从从问题1形成的新列表中取出每一个名字,然后用max方法,用推导列表取出符合的名字。

def longest_name(names):long_names = []for name in sort_names(names):if len(name) == max(len(name) for name in sort_names(names)):long_names.append(name)print("名字最长的有%s个,分别是:%s" % (len(long_names), long_names))return long_names

完整代码:

names = ('Kunpen Ji, Li XIAO, Caron Li,'
'Dongjian SHI, Ji ZHAO, Fia YUAN Y,'
'Wenxue DING, Xiu XU, Haiying WANG, Hai LIN,'
'Jey JIANG, Joson WANG E,'
'Aiyang ZHANG, Haiying MENG,'
'Jack ZHANG E, Chang Zhang, Coron ZHANG')
def sort_names(names):names_list = sorted([name.strip()for name in names.split(',')])return names_listdef get_chinese_names(names):chinese_names=[]for name in sort_names(names):if len(name)>=2:first_name=name.split()[0].capitalize()last_name=name.split()[1].capitalize()chinese_names.append(last_name+' '+first_name)else:chinese_names.append(name)list_temp = []for i in chinese_names:if i.startswith('Zhang'):list_temp.append(i)print("姓'ZHANG'的有%s个,分别是:%s" % (len(list_temp), list_temp))return chinese_namesdef longest_name(names):long_names = []for name in sort_names(names):if len(name) == max(len(name) for name in sort_names(names)):long_names.append(name)print("名字最长的有%s个,分别是:%s" % (len(long_names), long_names))return long_namesprint(sort_names(names))
get_chinese_names(names)
longest_name(names)

今天给大家介绍的这两个实战项目,都非常经典,希望Python入门的朋友能好好看看。最近也刚好有点时间,准备写一写Python入门的一些实战项目,大家觉得怎么样呢?

2个Python入门级的实战项目相关推荐

  1. python项目实战_2个Python入门级的实战项目

    这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握Python的其他两种数据类型--列表和字典.今天我就给 ...

  2. python经典项目实战_2个Python入门级的实战项目

    这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握Python的其他两种数据类型--列表和字典.今天我就给 ...

  3. python常用代码大全-Python 网络爬虫实战项目代码大全

    原标题:Python 网络爬虫实战项目代码大全 DouBanSpider 豆瓣读书的爬虫.你可以爬豆瓣读书下面标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价 ...

  4. Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    Python网络爬虫实战项目代码大全(长期更新,欢迎补充) 阿橙 · 1 个月内 WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫, ...

  5. python计算各类型电影的评分_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析|详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析|详解 注:图片源于https://movielens.org/ 1. 项目任务 1.1 数据来源 本项目使用Group ...

  6. 基于点击量的趋势分析python_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析详解 本文转自: 数据科学DataScience 注:图片源于https://movielens.org/ 1. 项目任 ...

  7. python爬虫文件代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)...

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

  8. python基础代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

  9. 基于python的房地产数据分析_基于Python的数据分析实战项目

    本文中项目资料来源于网易云课堂,代码为纯手工码字滴,请放心食用,不定期更新,欢迎对Python.数据分析以及编程感兴趣的同学留言沟通. 详细介绍了数十个数据分析相关的实战项目,大量使用pandas.n ...

  10. 精选合辑 | 30个Python数据分析及实战项目(含源码)

    今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F. 小F是211机械专业毕业的,上学的时候还造了两辆车(FSC.无碳小车),毕业以后又在车企搬了一年的砖,最终决定转行IT,从零开始学 ...

最新文章

  1. 微信小程序request合法域名怎么配置啊
  2. AI在传统制造业的应用落地!
  3. 9.4 均值标准化-机器学习笔记-斯坦福吴恩达教授
  4. centos7安装mysql8.0简书_【Linux实战03】CentOS 7 下 MySQL 8.0 的安装
  5. 【机器学习】搞懂机器学习的常用评价指标!
  6. 如何在64位Ubuntu16.04下安装java开发环境
  7. python +appium实现原理_python_appium使用原理
  8. (十四)nodejs循序渐进-高性能游戏服务器框架pomelo之开发Treasures游戏
  9. Rulo扫地机器人app_扫地机器人怎么选?扫地机器人怎么用
  10. OpenShift 4 - 通过设置SDN的NetworkPolicy定义Pod访问策略
  11. CSS:公共样式(自用)
  12. STL(multiset) UVA 11020 Efficient Solutions
  13. C++ 已知两点坐标和半径求圆心坐标程序
  14. 网络安全:漏洞测试主要平台 BackTrack4+Metasploit+ruby
  15. 记事本下编写并运行Java代码
  16. php话费充值,手机话费充值接口
  17. 简单翻译工具--必应词典第三方api使用方法
  18. html doc,HTML咸蛋超人版.doc
  19. 语音朗读html的源码,在网页上通过JS实现文本的语音朗读
  20. 数字图像处理第三章<一>、灰度变换

热门文章

  1. Ubuntu使用记录:安装deb软件方法以及apt、apt-get和dpkg的区别
  2. VScode使用记录二:Windows 7下安装GCC、使用VSCode编译代码
  3. ZFNet: Visualizing and Understanding Convolutional Networks
  4. Django框架(三)-- orm增删改查、Django生命周期
  5. 【转】Redis学习---阿里云Redis多线程性能增强版详解
  6. CentOS_5.5_安装GCC编译LiME
  7. 学生管理系统----当然封装类型
  8. Envious Exponents
  9. 【求助】C# Charting控件 画散点图,当所有的点X=0时,X轴的位置画错了,代码如下...
  10. 安装MATLAB(已经下载安装包)