Python基础课:一起学习python基础题

python最近老火了,万能开发语言,很多小伙伴们要么初学,要么从别的开发语言转过来的,如果你能把下面几道基础题不费劲的写出来,基础应该可以打80分,可以进行进阶的学习了,如果下面的题目如果做不出来,拜托不要耽误时间,赶快打好基础,勿在浮沙筑高台。

题目出给新鸟打基础的,实现答案的方法千千万,如果老鸟有更厉害的答案就不要喷了,先谢谢了。

还有新鸟先不要看答案,不要看答案,不要看答案,(重要的事情说三遍)自己先去解,用自己最简单的想法去实现,能用python自带的方法就不要自己造轮子。

好啦,开始吧!

 

一、通常,文章(论文,帖子)的标题,都要求英文首字母大写,这是一种常见的书写规范。
    现在,要求实现一个“处理函数”,能满足如下需求:
    1. 能够接收任意的字符串
    2. 能够将接收的这个字符串的英文首字母转换成大写
    3. 能够返回转换后的字符串
    例如:接收 'this is python.',会输出 'This Is Python.'

 

 1 def capital(*args):
 2     ws_list = []
 3     if args:
 4         for arg in args:
 5             words = arg.split(' ')
 6             w_list = []
 7             for w in words:
 8                 w = w.capitalize()
 9                 w_list.append(w)
10             new_word = ' '.join(w_list)
11             ws_list.append(new_word)
12         return ws_list
'''-------------运行结果--------------
>>> capital('this is python','it\'s my apple')
['This Is Python', "It's My Apple"]
'''

 

二、有时,我们会需要一连串等间距的数字(这在数据分析和进度控制等方面格外有用),例如:[0, 2, 4 , 6, 8]
    对于上述例子,使用 list(range(0, 10))可以十分方便的完成。
    但是 range 的步长只能是整数,因此,加入我们需要 [0, 0.1, 0.2, ... , 0.9], 那么 range 就不能满足我们的需求了。
    因此,写一个类似 range 的函数,来支持浮点数的步长。
    (我用列表推导生成,当然还有小小bug,新鸟可能阅读起来费劲,看看你能否找出bug)

 

1 def float_range(start, end, step):
2     return [round((x*step),1) for x in range(start,end*10) if round((x*step),1) < end and round((x*step),1) > start]
'''-------------运行结果--------------
>>> float_range(0,1,0.2)
[0.0, 0.2, 0.4, 0.6, 0.8]
>>> float_range(0,2,0.2)
[0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8]
>>> float_range(0,2,0.3)
[0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]
>>> float_range(1,3,0.5)
[0.5, 1.0, 1.5, 2.0, 2.5]
'''

 

三、加密与解密是一种最常见的需求。
    最简单加密方法之一就是,按照某种规则,将现有的字符变换成另一种。例如:a换成b, b换成c ... z换成a ... 。
    按照上述的规则, 'list' 就应该变成了 'mjtu'。
    现在,要求按照上述规则,完成两个函数:
    1. 加密函数
    2. 解密函数

    一旦你完成了上述的两种函数,试着定制一个自己的字符串。为你定制的字符串类添加以上两种方法。
    提示:“定制” 使用 “继承” 来实现

 

 1 class father_security:
 2     # 父加密类
 3     def encrypt(self,s): #加密函数
 4         self.s = s
 5         return ''.join([chr(ord(x)+1) for x in self.s])
 6 
 7     def decrypt(self,s): #解密函数
 8         self.s = s
 9         return ''.join([chr(ord(x)-1) for x in self.s])
10 
11 
12 class child_security(father_security):
13     # 子加密类
14     def __init__(self, s):
15         self.s = s
16 
17     def child_encrypt(self):  #子加密函数
18         return super().encrypt(self.s)
19 
20     def child_decrypt(self):  #子解密函数
21         return super().decrypt(super().encrypt(self.s))
'''-------------运行结果--------------
>>> m = child_security('apple')
>>> m.child_decrypt()
'apple'
>>> m.child_encrypt()
'crrng'
>>> 
'''

 

四、写一个装饰器,测试函数的运行时间,现在要求大家做如下测试:
    1. 可以测试函数运行的时间
    2. 可以将函数运行的时间输出到屏幕上
    3. 将运行时间,以日志的形式记录在指定的文件中(当作日志)。

 

 1 import time
 2 
 3 def run_time(func):
 4     def new_func(*args, **kwargs):
 5         path = r'd:\test\pythonlog.txt'
 6         tmp_time = time.time()
 7         start_time = time.strftime('%x %X',time.localtime())
 8         print('开始时间:{}'.format(start_time))
 9         result = func(*args)
10         end_time = time.strftime('%x %X',time.localtime())
11         print('结束时间:{}'.format(end_time))
12         run_time = round(time.time()-tmp_time,4)
13         print('运行时间:{}'.format(run_time))
14         with open(path,'a', encoding='utf8') as f:
15             f.writelines(['开始时间:'+str(start_time)+'\n', '结束时间:'+str(end_time)+'\n', '运行时间:'+str(run_time)+'\n'])
16             f.flush()
17         return result
18     return new_func
19 
20 
21 @run_time
22 def fab(max): 
23     n, a, b = 0, 0, 1
24     L = []
25     while n < max:
26         L.append(b)
27         print(b)
28         a, b = b, a+b
29         n = n + 1
30     return L
31 
32 
33 @run_time
34 def fab_yield(max):
35     n, a, b = 0, 0, 1
36     while n < max:
37         yield b
38         # print b
39         a, b = b, a + b
40         n = n + 1
41 
42 x = 10
43 L = [i for i in fab_yield(x)]
'''-------------运行结果--------------
>>> 
========================= RESTART: D:/test/ff33.py =========================
开始时间:06/30/17 14:43:15
结束时间:06/30/17 14:43:15
运行时间:0.0156
>>> 
========================= RESTART: D:/test/ff33.py =========================
开始时间:06/30/17 14:45:25
结束时间:06/30/17 14:45:25
运行时间:0.0312
>>> 
'''

记得去D盘下Test目录下看看日志是否写入

以上是python基础试题,检验一下自己是否真的入门了,如果还没有赶快加油吧!

祝你早日成功!

 

posted on 2017-07-01 01:20  yue_bei  阅读(413)  评论(0编辑  收藏  举报

导航