pingqiang

1.实现1-100的所有的和

#!/usr/bin/env python
#encoding:utf8
\'\'\'实现1-100的所有的和
1. 使用列表解析获取0-100的列表
2. 使用reduce内置函数和匿名函数计算列表的总和\'\'\'
number_list = [x for x in xrange(101)]      #使用xrange和range都可以,不过xrange的性能要优于range
sum_list = reduce(lambda x, y:x+y,number_list )
print sum_list      #结果为5050

2.实现1-500所有奇数的和

#!/usr/bin/env python
#encoding:utf8
\'\'\'实现1-500所有奇数的和
1. 同样使用列表解释获取1-500内的奇数
2. 使用reduce函数和匿名函数计算列表的总和\'\'\'

odd_list = [x for x in xrange(501) if x % 2 == 1] 
odd_sum_list = reduce(lambda x,y:x+y,odd_list)
print odd_sum_list      #结果为62500

3.求1+ 2! + 3! + 4! + ……20!的和

#!/usr/bin/env python
#encoding:utf8

\'\'\'
 计算1+ 2! + 3! + 4! + ……20!的和
\'\'\'

def fac(n):
    i = 1
    fac_number = 1
    while i <= n:
        fac_number = fac_number*i
        i += 1
    return fac_number

def fac_sum(n):
    sum = 0
    while n:
        sum += fac(n)
        n -= 1
    return sum

number = raw_input(\'plesae input the number:\')

print "%s!+...+2!+1 的和为 %d" % (number,fac_sum(int(number)))
    

4.对指定一个list进行排序[2,32,43,453,54,6,576,5,7,6,8,78,7,89]

  • 存在两种排序方式

    • sorted()
    • list.sort()

区别: sortedlist.sort 都接受key, reverse定制。但是区别是。list.sort()是列表中的方法,只能用于列表。而sorted可以用于任何可迭代的对象。list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()sorted() 会返回一个新的序列。旧的对象依然存在。
只要是可迭代对象都可以用sorted
sorted(itrearble, cmp=None, key=None, reverse=False)
=号后面是默认值 默认是升序排序的, 如果想让结果降序排列,用reverse=True
最后会将排序的结果放到一个新的列表中, 而不是对iterable本身进行修改。
sorted()函数的处理范围比list.sort()处理的范围更加广泛

\'\'\'方法一\'\'\'
list_to_sort = [2,32,43,453,54,6,576,5,7,6,8,78,7,89]
list_to_sort.sort() #sort不加参数默认为升序排序
print list_to_sort  #结果为[2, 5, 6, 6, 7, 7, 8, 32, 43, 54, 78, 89, 453, 576]


\'\'\'方法二\'\'\'
list_to_sort = [2,32,43,453,54,6,576,5,7,6,8,78,7,89]
new_sort_list = sorted(list_to_sort)    
print new_sort_list     #结果为[2, 5, 6, 6, 7, 7, 8, 32, 43, 54, 78, 89, 453, 576]

5.把一个数字的list从小到大排序,然后写入文件,然后从文件中读取出来文件内容,然后反序,在追加到文件的下一行中

实现代码如下:虽然没有必要这样做,但是体现了“分解”的思想,代码重复使用性增强

#coding:utf8

import sys
\'\'\'
把一个数字的list从小到大排序,然后写入文件
然后从文件中读取出来文件内容,然后反序,在追加到文件的下一行中
\'\'\'

def sort_list(list_origi):
    \'\'\'从小到大排序\'\'\'
    sorted_list = sorted(list_origi)
    return sorted_list

def write_file(file_name,context):
    \'\'\'写文件操作\'\'\'
    with open(file_name,\'w\') as fd:
        fd.write(\'{0}\'.format(context))

def reverse(list_origi):
    \'\'\'将列表倒序排列\'\'\'
    reverser_list = sorted(list_origi,reverse=True)
    return reverser_list

def append_file(file_name,context):
    \'\'\'追加内容到文件\'\'\'
    with open(file_name,\'a\') as fd:
        fd.write(\'\n{0}\n\'.format(context))

if __name__ == \'__main__\':
    list_origi = input(\'plese input a list:\')
    sorted_list = sort_list(list_origi)
    write_file(\'list_test.txt\',sorted_list)
    reverser_list = reverse(sorted_list)
    append_file(\'list_test.txt\',reverser_list)

上面的代码中的input是关键,如果使用raw_inputsys.argv[1]都为字符串类型。例输入一个列表[1,2,3],后面两个函数将会把这个列表变为[\'[\',\'1\',\'2\',\'3\',\',\',\',\',\']\'],这种结果肯定不是我们想要的。使用input 可以解决这个问题

6.用函数实现9*9乘法口诀

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

\'\'\'
9x9乘法运算
\'\'\'

def multiplication(i):
    \'\'\'
    1x1=1
    2x1=2,2x2=4
    ...
    ......
    \'\'\'
    a = 0
    list1 = []
    for y in [z for z in range(i) if z > 0]:
        for x in [d for d in range(i) if d > 0]:
                if x <= y:
                    b = "{0} x {1} = {2}".format(x,y,x*y)
                    list1.append(b)
        print str(list1) + \'\n\',      
        list1 = []
multiplication(10)

打印结果:

[\'1 x 1 = 1\']
[\'1 x 2 = 2\', \'2 x 2 = 4\']
[\'1 x 3 = 3\', \'2 x 3 = 6\', \'3 x 3 = 9\']
[\'1 x 4 = 4\', \'2 x 4 = 8\', \'3 x 4 = 12\', \'4 x 4 = 16\']
[\'1 x 5 = 5\', \'2 x 5 = 10\', \'3 x 5 = 15\', \'4 x 5 = 20\', \'5 x 5 = 25\']
[\'1 x 6 = 6\', \'2 x 6 = 12\', \'3 x 6 = 18\', \'4 x 6 = 24\', \'5 x 6 = 30\', \'6 x 6 = 36\']
[\'1 x 7 = 7\', \'2 x 7 = 14\', \'3 x 7 = 21\', \'4 x 7 = 28\', \'5 x 7 = 35\', \'6 x 7 = 42\', \'7 x 7 = 49\']
[\'1 x 8 = 8\', \'2 x 8 = 16\', \'3 x 8 = 24\', \'4 x 8 = 32\', \'5 x 8 = 40\', \'6 x 8 = 48\', \'7 x 8 = 56\', \'8 x 8 = 64\']
[\'1 x 9 = 9\', \'2 x 9 = 18\', \'3 x 9 = 27\', \'4 x 9 = 36\', \'5 x 9 = 45\', \'6 x 9 = 54\', \'7 x 9 = 63\', \'8 x 9 = 72\', \'9 x 9 = 81\']

乘法小习题

#!/usr/bin/env python
# coding:utf-8
# Time:2017/12/27/0027 18:19
# write_by: ping
# script_name:multiplication.py

\'\'\'
ABCD * 9 = DCBA
分别算出 A、B、C、D
A (0,9]
B [0,9]
C [0,9]
D (0,9]
\'\'\'
def multi():
    i = 0
    for alpha in range(1, 10):
        for beta in range(0, 10):
            for gamma in range(0, 10):
                for delta in range(1, 10):
                    left = int(alpha)*1000 + int(beta)*100 + int(gamma)*10 + int(delta)
                    right = int(delta)*1000 + int(gamma)*100 + int(beta)*10 + int(alpha)
                    i += 1
                    if left * 9 == right:
                        return "A = {}, B = {}, C = {}, D = {}.循环次数{}".format(alpha,beta,gamma,delta,i)

def main():
    print multi()


if __name__ == \'__main__\':
    main()

分类:

技术点:

相关文章: