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()

python初步学习-练习题的更多相关文章

  1. python 初步学习

    疑惑1:windows下的python  如何设置显示汉字 推荐几个学习网址,也方便自己以后查看: http://pmghong.blog.51cto.com/3221425/d-10 www.w3c ...

  2. python初步学习-import和datetime模块

    模块 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性.模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中.简单的说,可以把模块理解为一 ...

  3. python初步学习-Python模块之 re

    re 正则表达式 python正则表达式在线检验网站 python re正则表达式语法 匹配字符 语法 解释 表达式 匹配实例 . 匹配任意除"\n"以外的任何字符 a.c abc ...

  4. python初步学习-python 模块之 json

    json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...

  5. python初步学习-python模块之 os

    os os 模块在运维工作中是很常用的一个模块.通过os模块调用系统命令.os模块可以跨平台使用. 在 import os的时候,建议使用import os而非from os import *.这样可 ...

  6. python初步学习-python模块之 logging

    logging 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在python中,我们不需要第三方的日志组件,python为我们提供了简单易用.且 ...

  7. python初步学习-异常

    异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在python无法正常处理程序时就会发生一个异常. 异常是python对象,表示一个错误. 当python脚本 ...

  8. python初步学习-面向对象之 类(二)

    方法重写 如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法: #!/usr/bin/env python #coding:utf8 class Parent: def myMeth ...

  9. python初步学习-面向对象之类(一)

    python 面向对象 python 从设计之初就已经是一门面向对象的语言,正因为如此,在python中创建一个类和对象是很容易的. 对象对象奇数简介 类(Class): 用于描述具有相同的属性和方法 ...

随机推荐

  1. C# 源码计数器

    设计背景 编程工作中,有些文档需要填写代码量,例如申请软件著作权.查阅相关资料之后,编写了这个小程序. 设计思路 主要思路为分析项目文件,根据项目文件查找代码文件,然后遍历代码文件进行分析 相关技术 ...

  2. UVALive6443_Alien Abduction Again

    题意为给你若干个三次函数,以及每一个函数所分布的区间,由于每个函数的所有的系数都是整数,所以最后的函数在整数点处的值也是整数. 现在每次可以插入函数或者询问区间,现在要求每次询问区间后,所有的函数在这 ...

  3. Oracle 双字段过滤

    白名单:数据 id ,  g_id,sys_id 1,2,3 1,2,4   黑名单:数据 id ,  g_id,sys_id b,2,3   结果  1,2,4      select t1.*   ...

  4. 【刷题】BZOJ 3732 Network

    Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1-N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_ ...

  5. [洛谷P3175][HAOI2015]按位或

    题目大意:刚开始有一个数$x=0$,每秒钟有一个数$y\in[0,2^n)(n\leqslant20)$按一定概率随机出现,数$i$的概率为$p_i$,保证$\sum\limits_{i=0}^{2^ ...

  6. 【NOI2015】寿司晚宴

    题目链接:http://uoj.ac/problem/129 描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. ...

  7. XML外部实体(XXE)注入详解

    ###XML与xxe注入基础知识 1.XMl定义 XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言:可扩展的样式语言(Ex ...

  8. Linux内核分析实验八------理解进程调度时机跟踪分析进程调度与

    一.进程调度与进程调度的时机分析 1.不同类型的进程有不同的调度需求 Linux既支持普通的分时进程,也支持实时进程. Linux中的调度是多种调度策略和调度算法的混合. 2.调度策略:是一组规则,它 ...

  9. 编译安装keepalived,实现双主mysql高可用

    安装keepalived 1.官网下载源码包,解压 # wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz # tar x ...

  10. 解题:NOI 2016 优秀的拆分

    题面 其实题目不算很难,但是我调试的时候被玄学了,for循环里不写空格会RE,写了才能过.神**调了一个多小时是这么个不知道是什么的玩意(真事,可以问i207M=.=),心态爆炸 发现我们只要找AA或 ...