1000道Python编程题

1、这里写图片描述

分析

思维发散一点,对于给定的合理数字输出都为类似图中的菱形,我们探索一下上图的特点:
组成图形的元素个数先增后减,并且符合:
假设给定的数字为m,那么行数为2m+1,每一行的元素个数为:

2n+1(n<m+1)
2(m-n-1)+1(2m+1>n>=m+1)

对于存在的空格补齐使用字符串的center方法
def print_format_star(n):
    lenn = 2*n+1
    for i in range(n):
        result =  '*'*2*i+'*'
        result = result.center(lenn,' ')
        print result
    for i  in range(n+1):
        result = '*'*2*(n-i)+'*'
        result = result.center(lenn, ' ')
        print result

#精简一点的:
def print_format_star(n):
    lenn = 2*n+1
    hr = n+1
    for i in range(lenn):
        if i < hr:
            result = '*' * 2 * i + '*'
        else:
            result = '*' * 2 * (lenn - i-1) + '*'
        result = result.center(lenn, ' ')
        print result

10、

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

from __future__ import division
def cal_sum():
    fenzi = 2
    fenmu = 1
    lst = [2]
    for i in range(1,20):
        fenmu,fenzi= fenzi,fenmu+fenzi
        lst.append(fenzi / fenmu)

    return reduce(lambda x,y:x+y,lst)

11

题目:求1+2!+3!+…+20!的和。

def get_ret(n):
    tmp = 1
    lst = [1]
    for i in range(2,n+1):
            tmp = i*tmp
            lst.append(tmp)
    return reduce(lambda x,y:x+y,lst)

100

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

def num_reverse(num):
    numLen = len(str(num))
    print numlen
    for i in range(numLen):
        toPrint = num % 10
        num = (num - toPrint)/10
        print toPrint

101

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

def who_remain(n):
    lst = range(1, n+1)
    while n > 2:
        lst.pop(2)
        before = lst[:2]
        lst = lst[2:]
        lst.extend(before)
        n = len(lst)
    return lst[-1]

110

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n

def sum_even_odd(n):
    ls = [1/i for i in range(n,0,-2)]
    return sum(ls)

111

找到年龄最大的人,并输出。

def get_oldest():
    import operator
    person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
    name = max(person.iteritems(), key=operator.itemgetter(1))[0]  # 获取最大值的 key
    age = max(person.values())
    return name,age

1000

求0—7所能组成的奇数个数。

def get_odd():
    sum = 4
    s = 4
    for j in range(2, 9):
        print sum
        if j <= 2:
            s *= 7
        else:
            s *= 8
        sum += s
    print 'sum = %d' % sum

cookies

#字符串日期转换为易读的日期格式。
from dateutil import parser
dt = parser.parse("Aug 28 2015 12:00AM")
print dt
  • 9
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值