python 练习

2015 / 11 / 12 python

map()和reduce()函数

  • 第一题
    '''
    利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
    输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:
    '''
    

def normalize(name):
return name[0].upper() +name[1:].lower()

L1 = [‘adam’, ‘LISA’, ‘barT’]
L2 = list(map(normalize, L1))
print(L2)

<!-- more -->
*  第二题
```python
'''
Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
'''

from functools import reduce

def prod(L):
    return reduce(lambda x,y: x*y,L)

print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
  • 第三题
    '''
    利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
    解题思路 分2部分 小数点之前的 每位*10 ,小数点之后的,倒序每位/10
    '''
    from functools import reduce
    
    

def str2float(s):
arr = s.split(“.”)
first_num = reduce(lambda x,y:x*10+y , map(int,arr[0]))
if len(arr) > 1:
first_num += reduce(lambda x, y : x/10+y, map(int, (“0”+arr[1])[::-1]))
return first_num
print(‘str2float('123.456') =’, str2float(‘123.456’))
print(‘str2float('123.45678') =’, str2float(‘123.45678’))
print(‘str2float('12345678') =’, str2float(‘12345678’))


## python2.7 爬虫
### 抓取json数据
```python
import urllib
import urllib2
cookies = "lzstat_uv=36646143701674066401|3239393; JSESSIONID=AA3A6FEE4AF7E7878218583316BBC9B4; l=Ap6eJnEdnxIiW7Ybwfnsex2lbj7gDmLb; visitState=pc; CNZZDATA30063739=cnzz_eid%3D2009472116-1453958417-%26ntime%3D1453982370; CNZZDATA30073553=cnzz_eid%3D51683217-1453956930-%26ntime%3D1453981617; lzstat_ss=978823405_1_1454014976_3239393; MIIEE_JTOKEN=02978316089138388698541186051443227222067695111036";
url = "http://www.miiee.com/interface/dresslist.htm?_=04511898399796337";
values = {'n' : '1',    
          'p' : '1',     
          'jtoken' : '02978316089138388698541186051443227222067695111036' }    
headers = { 'Cookie' : cookies }
data = urllib.urlencode(values) 
req = urllib2.Request(url, data,headers)
response = urllib2.urlopen(req) 
the_page = response.read();
print the_page
print response.info()
print response.geturl()