您的位置:首页 > 编程语言 > Python开发

python第一次练习题

2015-10-18 12:05 671 查看
从来没有在一天内学习这么多东西,值得纪念(Q币果然激发人斗志)

1. print repr(u'蓝鲸')  的运行结果是什么?

 

答:运行结果为 u'\u84dd\u9cb8'

u’蓝鲸‘表示’蓝鲸‘代表的是一个Unicode编码字符串

repr(x)函数返回x对象的字符串表示

 

2. 什么是lambda函数?并列举一个使用lambda函数的例子

 

答:lambda函数就是匿名函数,用法为 lambda 参数:返回值 

对于某些简单和只使用一次的函数来说,

使用lambda比定义新函数更加方便

 


 

3. Excel操作



{

    "1":["张三",150,120,100],

    "2":["李四",90,99,95],

    "3":["王五",60,66,68]

}

写入excel如下所示:

 


 

答:代码如下:

#!/usr/bin/env python
# coding=utf-8
from xlwt import *
file = Workbook(encoding='utf-8')
table = file.add_sheet('test')
data = {\
    "1":["张三",150,120,100],\
    "2":["李四",90,99,95],\
    "3":["王五",60,66,68]}
ldata = []
num = [a for a in data]
num.sort()
for x in num:
    t = [int(x)]
    for a in data[x]:
        t.append(a)
    ldata.append(t)
for i,p in enumerate(ldata):
    for j,q in enumerate(p):
        print i,j,q
        table.write(i,j,q)
file.save('demo')
 

运行结果:

 


生成文件:

 


表格内容:

 


 

4. 简述对Python装饰器的理解

 

答:装饰器,可以看做是用于修饰函数的工具,而本质上装饰器也是函数,

而且必须是一个形参和返回值都是函数的函数。

下面是一个小例子

def red_hat(f):
    print 'red_hat:给你戴个红帽子'
    return f

def blue_hat(f):
    print 'blue_hat:给你戴个蓝帽子'
    return f
@blue_hat  #等同于 fun = blue_hat(red_hat(fun))
@red_hat   #等同于 fun = red_hat(fun)
def fun():
    print 'fun:我要戴帽子'
fun()
 
######形象点说,可以把fun比作一个人,red_hat给它戴上了一个红帽子,然后blue_hat在红帽子之上又给它戴了一个蓝帽子
 

通过装饰器很方便的对一些函数添加一些附加功能,而且既不改变函数的原有逻辑结构,

又可以省去很多的重复代码工作

 

5. 生成100个随机数,保存到Redis非关系型数据库中

 

答:代码如下

#!/usr/bin/env python
# coding=utf-8

import random
import redis

num = []
for i in range(100):
    num.append(random.randint(1,1000))
print num
r = redis.StrictRedis(host = 'localhost',port = 6379, db = 3)
r.set('dssd','ss')
for i,x in enumerate(num):
    r.set(i,x)
print '添加成功'
newnum = [r.get(i) for i in range(100)]
print newnum
 

 

运行结果

 

 


 

6. 写结果

if 1 in [1,0] == True:

print  ‘a’

  Else:

  Print  ‘b’

 

答:结果 ‘b’

乍一看想着应该是‘a’,敲完发现是‘b’,百思不得解。

发现if (1 in [1,0]) == True 输出与预想相同,于是查看优先级,

一开始想着==的优先级高于in,而[1,0]与True是不同类型,

不同类型对象比较是通过对typename进行比较的,

所以([1,0] == True) 为 False,但1 in True又无法解释

网上查找资料发现A x B y C 会被转化为

(A x B) and (B y C),

所以1 in [1,0] == True --> (1 in [1,0]) and ([1,0] == True)

--> True and False --> False

 

7. 用Python写一个程序,拉取SVN上的某一个文件,修改后并提交该文件。

 

答:代码如下

#!/usr/bin/env python
# coding=utf-8

import os

os.system(
    'svn  co  svn://localhost/test \
    --username shiyi --password 19960604'
)

name = raw_input('输入修改的文件名:')
name ='test/' + name
file = open(name,'r')
txt = file.readlines()

for i,x in enumerate(txt):
    print '%2d>>%s'% (i+1,x),

num = raw_input('输入需要修改的行号:')
num = int(num)
print '>>'+txt[num-1]
txt[num-1] = raw_input('输入新内容:')+'\n'

os.rename(name,'temp')
newfile = open(name,'w')
for x in txt:
    newfile.write(x)
newfile.close()
os.remove('temp')

os.system(
    'svn commit -m "a" %s \
    --username shiyi --password 19960604'%name)
os.system(
    'svn ci -m "b" %s \
    --username shiyi --password 19960604'%name)
 

运行结果

 


 

8. 用Python画出y=x3的散点图

 

答:代码如下

#!/usr/bin/env python
# coding=utf-8
 
import numpy as np
import pylab as pl

node = [(x*0.1, (x*0.1)**3) \
        for x in range(-100,100)]
x, y = zip(*node)
pl.plot(x, y, 'o')
pl.show()
 

运行结果:

 


 

9. 用Python爬取知乎热门帖的标题,并存储到MySQL中

 

答:代码如下

 

#!/usr/bin/env python
# coding=utf-8
'''
    网页源代码是通过手动拷贝到zhihu.txt内
'''

import re
import MySQLdb

file = open('zhihu.txt','r')
htm = file.read()
s = '<a class="question_link"(.*?)/a>'
tlist = re.findall(s, htm, re.S)
s = '>(.*)<'

conn=MySQLdb.connect(
    host='localhost',
    user='root',
    passwd='shiyi',
    db='python',
    port=3306)
cur = conn.cursor()
i = 1
for x in tlist:
    title = re.search(s, x, re.S).group(1)
    print 'title%d:%s' % (i,title)
    cmd = "insert into zhihu(title)\
     values('%s')" % title
    cur.execute(cmd)
    conn.commit()

conn.close()
 

运行结果

 

 


 

数据库结果

 


 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: