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