python练习6

# -*- coding: utf-8 -*-
import itertools
from functools import reduce
minus = [-1]
def change(num):
    minus[0]*= -1
    return minus[0]*4/num
def pi(N):
    ' 计算pi的值 '
    # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...
    odd_seq = itertools.count(1,2)
    # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.
    lmt_seq = itertools.takewhile(lambda x:x<=(2*N-1),odd_seq)
    # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...
    seq = map(change,lmt_seq)
    # step 4: 求和:
    return reduce(lambda  x,y: x+y,seq)


# 测试:
print(pi(10))
print(pi(100))
print(pi(1000))
print(pi(10000))
print(pi(100000))
assert 3.04 < pi(10) < 3.05
assert 3.13 < pi(100) < 3.14
assert 3.140 < pi(1000) < 3.141
assert 3.1414 < pi(10000) < 3.1415
print('ok')

#看了下评论的代码,其实我更迷惑
#为什么简单的json.loads一下就可以创建一个对象
#返回的json数据应该是python里一个嵌套到底dict类型
#好像是这样的,json.loads默认返回的类型是dict
#通过设置参数函数可以定制返回的类型
#让我手足无措的应该是这个嵌套的dict
from urllib import request
import json


def fetch_data(url):
    with request.urlopen(url) as f:
        data =f.read()
        return json.loads(data.decode('utf-8'))


# 测试
URL = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json'
data = fetch_data(URL)
print(data)
assert data['query']['results']['channel']['location']['city'] == 'Beijing'
print('ok')
 
原文地址:https://www.cnblogs.com/MalcolmMeng/p/8442957.html