这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握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 i

for i in range(1,20):

print(replace_num(i))

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

'apple'[i%3len('apple')::]+'orange'[i%5len('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)

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

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

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

现有一字符串人名:

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_list

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

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

print(sort_names(names))

get_chinese_names(names)

longest_name(names)

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

python经典项目实战_2个Python入门级的实战项目相关推荐

  1. python经典好书-7本有关Python的经典好书推荐,适合各类人群

    原标题:7本有关Python的经典好书推荐,适合各类人群 Python越来越受到各行业从业者的关注,成为职场人士极为关注的职业提升技能,为了解答很多初学者的问题,今天特别给大家推荐9本有关Python ...

  2. python经典小游戏五子棋,适合python编程的小游戏

    python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...

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

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

  4. python经典教程_零基础 Python爬虫经典实战教程

    最近Python爬虫比较火,看到网上分享源码的比较多,很少有教程帖子,为了帮助新人和对爬虫比较感兴趣的朋友,所以想到写一些比较详细教程帖子!大家共同学习! 下载工具,安装对应系统的版本,下面以wind ...

  5. python经典小程序-你用python写过那些好玩的微信小程序?

    教你用Py来玩跳一跳小程序教程+项目地址 2017 年 12 月 28 日下午,微信发布了 6.6.1 版本,加入了「小游戏」功能,并提供了官方 DEMO「跳一跳」. 这是一个 2.5D 插画风格的益 ...

  6. Python经典面试题:说说Python中xrange和range的区别?

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  7. python经典小游戏-又一个python小游戏,叫什么不知道了。。。

    [Python] 纯文本查看 复制代码import sys import pygame from pygame.color import THECOLORS as COLORS def draw_ba ...

  8. python经典实例应用_《Python经典实例(图灵出品)》([美]史蒂文·F.洛特)【摘要 书评 试读】- 京东图书...

    权利声明: 京东上的所有商品信息.客户评价.商品咨询.网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用. 注:本站商品信息均来自于合作方,其真实性.准确性和合法性由信息拥有者(合作方) ...

  9. python经典好书-python经典书籍推荐

    互动出版网python书籍专区.为您推荐python经典书籍,学习python程序语言必读经典之作.以及关于python经典教材. 本书包括python程序设计的方方面面,首先从python的安装开始 ...

最新文章

  1. 超级简单的mysql主从数据库配置攻略以及错误处理
  2. Skaffold:让K8S开发工作变得简单
  3. Linux PCI 设备驱动基本框架(一)
  4. 为什么新手开车起步总是熄火
  5. 人类共同命运:当下,科学交流尤其需要乐观主义
  6. excel运行python_使用PyXLL在Excel中执行Python脚本
  7. linux下Led的设备驱动程序实验总结,Linux让LED灯闪起来
  8. Activity、View、Window的理解一篇文章就够了
  9. show,hide与fadeIn、fadeOu的区别
  10. 类似金山打字的窗口打字游戏代码版--注释很多,不用讲解
  11. 尚硅谷RabbitMQ学习笔记(上)
  12. 为VSCode 设置好看的字体:Operator Mono
  13. RS485通讯协议的应用
  14. 【攻防世界】十八、mfw
  15. 洛谷_P1007 独木桥_思维
  16. 一个技术总监的忠告:精通那么多技术为何还是做不好一个项目?
  17. Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线发射芯片
  18. 配对t检验的应用条件是什么_配对t检验的适用条件,独立样本T检验、配对T检...
  19. Atlas 200 HiLens Kit
  20. php zlib decompress,PHP - Manual: Phar::decompress (官方文档)

热门文章

  1. python读取excel指定行列_pandas读取excel指定行列索引header和index_col参数
  2. getvalue参数计数不匹配_OpenCV开发笔记(六十八):红胖子8分钟带你使用特征点Flann最邻近差值匹配识别...
  3. Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
  4. Android Asynchronous Http Client-Android异步网络请求客户端接口
  5. 4月11日 GCD 总结(二)
  6. native版本 修改项目react_react native项目改名(仅针对android)
  7. 阿里云专访Redisson作者Rui Gu:构建开源企业级Redis客户端之路
  8. 重新学习的HTTP协议
  9. 开发中常见的十种对缓存的错误使用
  10. Linux下面makefile编写