求一到n偶数和值python,几个python练习题

从python公众号里面看到了几道python的练习题,就拿来练练手,结果上手了发现自己还是特别水,不是很难的8道题,我只做出来5道,其中还3道题卡住了,边查边做的。原题链接在这里:http://python.jobbole.com/83641/

1. 编写代码, 打印1-1亿之内的偶数

看完题目想都没想就直接写了一句:

1 print [i for i in xrange(1, 10**9) if i % 2 == 0]

开始跑结果。然后。死机了。重启时候反省了一下,嗯,的确是有点二,一下生成五千万个元素的列表,电脑没炸了就算它好脾气了。可是,总不能一个for循环打印吧,那也太low了。考虑了一下,还是用协程靠谱一点。于是重新写了一个(在QQ群里看到别人写的稍微改良了一点):

1 defeven_maker(x):2 for i in (i for i in xrange(1, 50000001)):3 yield i * 2

4

5 for i in even_maker(10**9):6 print i, ‘,‘,

效率不太高,感觉应该有更好的办法,不过我暂时也没想继续深入想了。

2. 写一个函数, 用正则表达式清除字符串中[]和其中的内容。s = "[lol]你好,帮我把这些markup清掉,[smile]。谢谢!"

这个没什么难度,用正则处理正合适。

1 s = "[lol]你好,帮我把这些markup清掉,[smile]。谢谢!"

2 print re.sub(‘\[.*?\]‘, ‘‘, s)

一行搞定(不许吐槽这是两行)。

3. 请使用python, 对下面的函数进行处理,

def hello(name):

print "hello, %s" % name

在函数被调用时打印耗时详情

hello, tom

[timecosts: 3.81469726562e-06s]

典型的装饰器。不过我对装饰器是真的不熟,基本上都靠蒙。之前转载了一遍博客:http://www.cnblogs.com/anpengapple/p/5068580.html 是装饰器的,写的不错,我差不多每次都要照这个抄。这次这个装饰器已经是相当简单了。

1 defname_and_time_func(func):2 def name_time(*param):3 start_time =datetime.datetime.now()4 print ‘‘, func.__name__

5 print ‘‘

6 func(*param)7 print ‘‘

8 time.sleep(1) #可以不加,但是不加的话看不出来时间间隔

9 print ‘[time costs: %s]‘, datetime.datetime.now() -start_time10 returnname_time11

12 @name_and_time_func13 defhello(name):14 print "hello, %s" %name15

16 hello(‘an peng‘)

4. 写一个函数, 将驼峰命名法字符串转成下划线命名字符串,如GetItem -> get_item,getItem -> get_item

开始不知道该怎么做,就写了个循环,挨个字符处理,如果是大写,就改成下划线+小写的形式。但是觉得这么写实在是太low了。群里同学指点用sed,然而我只是要练习python啊又不是玩shell。后来在网上查了查re.sub的用法。之前不太会用,以为只能则匹配到的字符串替成同一个字符串。查过才知道原来第二个参数可以用函数或者lambda表达式对匹配到的字符串逐一替换。有了这个强大的武器可就方便多了。

1 defcamel_name(name):2 _name = re.sub(‘[A-Z]‘, lambda x: ‘_‘ +x.group(0).lower(), name)3 return _name if _name[0] != ‘_‘ else _name[1:] #替换完之后有可能第一个字母是下划线,需要去掉

4

5 names = [‘GetItem‘, ‘getItem‘, ‘getitem‘]6 for i innames:7 print camel_name(i)

5. 打印列表:[1, 2, 3, 4...n],n=20;请编写代码打印如下规律的输出:

1 [1*, 2, 3, 4, 5]

2 [1, 2*, 3, 4, 5]

3 [1, 2, 3*, 4, 5]

4 [2, 3, 4*, 5, 6]

5 [3, 4, 5*, 6, 7]

6 [4, 5, 6*, 7, 8]

...

20 [16, 17, 18, 19, 20*]

差不多就是网页中的翻页格式吧。这个也没有太大难度,不过我还是小卡一下,主要是强迫症犯了,想把这个改成更通用一点的形式。调了几次之后效果还是不错的,总页数和显示出来的页码数量可以自己传参数,*页码总会出现在中间。当页码大于总页数或小于1的时候也会自行调整。

1 def page_print(page, total=20, width=5):2 #page是当前页码,就是标*的页码

3 #total是总页码

4 #width是显示的页数(*页码会出现在中间)

5

6 #设置打印页码,避免超出范围

7 if page < 1:8 page = 1

9 if page >total:10 page =total11

12 #设置起始页码

13 if page < width / 2 + 1:14 start = 1

15 elif page > total - width / 2:16 start = total -width17 else:18 start = page - width / 2

19

20 ret = str(page) + ‘[‘

21 for i in xrange(start, start + width + 1):22 if i ==page:23 ret += ‘*‘

24 ret +=str(i)25 if i != start +width:26 ret += ‘,‘

27 else:28 ret += ‘]\n‘

29

30 returnret31

32 t = 18

33 for i in xrange(1, t + 1):34 print page_print(page=i, total=t, width=8)

6. 写一个程序模拟银行排队, 只有一个队伍, 一个用户进入时允许插队(进入队伍任意位置), 但要保证每次导致队伍变更, 队伍中受影响的人都收到通知

Customer A line up at position 11

Customer B: order changed to 12

Customer C: order changed to 13

Customer D: order changed to 14

不会。感觉像是某个设计模式的东西,我对设计模式了解的不多,暂时没想到什么好办法。强行写是能写的,不过程序写出来肯定会很丑。等有空再想想(潜台词是懒得动脑了)。

7. 用户系统, 存在相互关注的动作, 当进入某个人的个人主页, 需要展示其粉丝数, 关注数, 粉丝列表以及关注列表. 请简要描述解决方案, 包括db建模/数据层/业务层, 以及应对高并发/关注取关等情况的处理逻辑。

略。

8. 给定一些NxN的矩阵,对于任意的路线,定义其【和】为其线路上所有节点的数字的和,计算从左上角到右下角的路线和最小值。每条路线只能从某一点到其周围(上下左右)的点,不可斜行。 例如,

4,6

2,8 的路线和最小值为 4-2-8 14

1,2,3

4,5,6

7,8,9 的路线和最小值为 1-2-3-6-9 21

程序只需输出最小和值即可(一个数字)

这是典型的动态规划问题啊。当年学动态规划时候,算法导论书上的第一个例子流水线问题就是这个东西。不过然而但是可是,动态规划我几乎忘光了。先放在这里,过几天写篇日志补上。

原文:http://www.cnblogs.com/anpengapple/p/5071215.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P1122 最大子树和-求树的最大子树权值和

输入: 7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7输出: 3代码如下: #include <iostream> #include <vector> using namespace std; const int N 100010; typedef long long LL; LL ans; vector<LL>t[N]; LL w[N];void dfs(int root, int fa) {for (int…

玩转控件:封装Dev的LabelControl和TextEdit

缘由俗话说的好&#xff1a;"工欲善其事必先利其器"&#xff0c;作为软件攻城狮也是同样道理&#xff0c;攻城狮开发的软件目的是简化客户的操作&#xff0c;让客户动动手指就可以完成很多事情&#xff0c;减少人力成本。这也是系统/软件存在的目的。那对于攻城狮来说…

php mvc多态实例,asp.net mvc-多态模型绑定

我花了好一天的时间来解决一个密切相关的问题的答案-尽管我不确定这是否是完全相同的问题&#xff0c;但如果有人正在寻找解决同一问题的解决方案&#xff0c;我会在这里发布。就我而言&#xff0c;我有一个抽象的基本类型&#xff0c;用于多种不同的视图模型类型。 因此&#…

洛谷 P1958 上学路线-dfs

输入: 5 4 3 2 2 2 3 4 2输出: 5注意点:这题目输入的时候先输入列&#xff0c;再输入行&#xff0c;这点要注意&#xff0c;然后这个图跟我们二维数组是反过来的&#xff0c;所以题目说得向北走要变成向南走&#xff0c;注意一下细节就好了。 代码如下: #include <io…

.NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(下)...

33 | 集成事件&#xff1a;使用RabbitMQ来实现EventBus为了演示我们的发布和订阅的话&#xff0c;我们在这里的代码做一些稍微的调整namespace GeekTime.API.Application.DomainEventHandlers {public class OrderCreatedDomainEventHandler : IDomainEventHandler<OrderCre…

文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文...

在博文《Matlab&#xff1a;学习GUI(一个简单的例子)》(介绍的方法是完全用代码来建立一个GUI&#xff0c;实际上Matlab本身有一个设计GUI的交互系统——GUIDE&#xff0c;用户可以使用该系统更方便的建立自己的GUI.本文将介绍使用GUIDE时常常遇到的几个问题。本文将通过一个简…

洛谷 P1294 高手去散步-邻接矩阵+dfs-求无向图的一条最长路径

输入: 4 6 1 2 10 2 3 20 3 4 30 4 1 40 1 3 50 2 4 60输出: 150邻接矩阵&#xff1a; 代码如下: #include <iostream> using namespace std;int ans -1; const int N 25; int mp[N][N]; bool vis[N]; int n, m; void dfs(int u, int sum) {ans max(ans, sum);for …

论ORM框架—EntityFrameworkCore

欢迎大家阅读《朝夕Net社区技术专刊》我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为忠实读者&#xff0c;文末福利不要错过哦&#xff01;01PARTORM框架ORM&#xff08;Object Rela…

数字和为sum的方法数-01背包计数问题

给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入描述: 输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000)&#xff0c;sum(1 ≤ sum ≤ 1000) 第二行为n个正整数Ai…

Oracle多租户体系,Oracle12C 多租户管理

--进入cdbsqlplus /nologconn sys/sys as dba--查看数据库基本信息select name,cdb from v$database;--查看容器的相关信息select con_id,name from v$containers;--查看数据文件的路径select con_id,file_name from cdb_data_files order by 1;--显示当前连接容器信息show con…

苏老师首播3小时!超500人观看!录屏!源码!PPT……你要的都在这里!

点击视频 ☝ 回顾直播现场2020年3月25日晚18&#xff1a;30&#xff0c;“盛派周三分享”首次直播交流会&#xff0c;由盛派技术团队带头人Jeffrey&#xff0c;苏震威老师主持、分享&#xff0c;主题是《SCF 框架介绍快速创建项目演示》。此次直播历时3个多小时&#xff0c;500…

oracle错误 904,ORACLE 导出错误 EXP-00008: 遇到 Oracle 错误 904

案例情景——在一次C:\Documents and Settings\Administrator>explsxy/lsxylsxy_dbfileE:\lsxy.dmp ownerlsxyExport:Release 11.2.0.1.0- Production on 星期一 11月 26 14:07:18 2012 Copyright (c) 1982,2009,Oracle and/or its affiliates. All rights reserved.连接到:…

[蓝桥杯][算法提高VIP]数的划分-dp

题目描述 一个正整数可以划分为多个正整数的和&#xff0c;比如n3时&#xff1a; 3&#xff1b;1&#xff0b;2&#xff1b;1&#xff0b;1&#xff0b;1&#xff1b; 共有三种划分方法。 给出一个正整数&#xff0c;问有多少种划分方法。 输入 一个正整数n 数据规模和约定 …

十问十答 GPL 许可证

GPL 是 GNUs General Public License 的缩写&#xff0c;翻译成中文叫 GNU 的通用公共许可证&#xff0c;是最受欢迎的开源许可证之一。它由理查德斯托曼&#xff08;Richard Stallman&#xff09;创建&#xff0c;目的是保护 GNU 软件免于被专有&#xff0c;是基于他「版权向左…

oracle consistent gets,oracle构建一致性读

对于实际的业务系统&#xff0c;通常有一些热点的表&#xff0c;insert和delete的量非常大&#xff0c;这个时候就会发现一些查询语句的逻辑读比较偏高&#xff0c;这时可能就是oracle在构建一致性块的进行的consistentread。下面做一个测试看下&#xff1a;第一步准备数据&…

[蓝桥杯][算法提高VIP]聪明的美食家-dp

题目描述 如果有人认为吃东西只需要嘴巴&#xff0c;那就错了。 都知道舌头有这么一个特性&#xff0c;“由简入奢易&#xff0c;由奢如简难”&#xff08;据好事者考究&#xff0c;此规律也适合许多其他情况&#xff09;。具体而言&#xff0c;如果是甜食&#xff0c;当你吃的…

解析“60k”大佬的19道C#面试题(上)

解析“60k”大佬的19道C#面试题&#xff08;上&#xff09;先略看题目&#xff1a;请简述 async函数的编译方式请简述 Task状态机的实现和工作机制请简述 await的作用和原理&#xff0c;并说明和 GetResult()有什么区别Task和 Thread有区别吗&#xff1f;如果有请简述区别简述 …

oracle秘钥到期,Oracle – 更新加入 – 非密钥保留表

我试图复制一个Ingres“tbl2”中的更新tbl1命令,这在Oracle中并不完全.所以我使用“update(select tbl1 join tbl2 …)”命令.两个表都定义了主键,我认为我的连接唯一标识行,但是我仍然得到“ORA-01779&#xff1a;不能修改映射到非密钥保留表的列”.这里是适当的匿名表定义和我…

dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp

题目描述 将整数n分成k份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。 例如&#xff1a;n7&#xff0c;k3&#xff0c;下面三种分法被认为是相同的。 {1&#xff0c;1&#xff0c;5}&#xff1b;{1&#xff0c;5&#xff0c;1}&#xff1b;{5&…

通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]

《200行代码&#xff0c;7个对象——让你了解ASP.NET Core框架的本质》让很多读者对ASP.NET Core管道有了真实的了解。在过去很长一段时间中&#xff0c;有很多人私信给我&#xff1a;能否按照相同的方式分析一下MVC框架的设计与实现原理&#xff0c;希望这篇文章能够满足你们的…