Python小课题练习作业
作业一:
利用*字典*输出目录,可以选择目录进入,可以回退、退出!
#conding:utf8
menu = {'北京':{'昌平':{'沙河':{'昌平妇幼',}},'海淀':{'海淀一区':{'海淀二区'},}},} #字典嵌套
current_layer = menu #利用此变量来记录当前的层的位置
|
作业二
list的小练习:实现购物车功能
product_list = [['iphone',6500],['Mobli',5000],['huawei',4000],['oppo',300],['vivo',100]]
money = int(input('please input your money:'))
|
作业三
冒泡算法小练习
a_list = [9,8,7,6,5,4,3,2,1] for j in range(len(a_list) -1): #第二步,每次循环排好一个数,则需要len(a_list) -1 次,才能全部的排好 |
作业四
插入算法小练习
实现方法一:
a_list = [3 ,66 ,3 ,41 ,34 ,6 ,7 ,845 ,234 ,31] |
实现方法二:
arr1 = [10,9,8,7,6,5,4,3,2,1] for i in range(1, len(arr1)): #从第二个数开始拿来作比较 |
做业五
打印99乘法表
|
#! /usr/bin/python
# Filename : table_9x9.py
print '\n9x9 Table\n'
for i in range(1, 10) :
for j in range(1, i+1) :
print j, 'x', i, '=', j*i, '\t',
# print '%d x %d = %d\t' %(j, i, j*i),
print '\n'
print '\nDone!'
关于该程序的说明:
1. 第一行是特殊注释行,称为组织行,用来告诉GNU/Linux系统应该使用哪个解释器来执行该程序。
2. 第二行至第四行都是一般的注释行,用来说明一些信息的(如文件名,作者,时间等)。
3. 第六行打印一个字符串。
4. 第八行i取值范围为1, 2, 3, 4, 5, 6, 7, 8, 9
5. 第九行j取值范围为1, 2, ..., i
6. 第十行和第十一行效果一样,最后的逗号都是用来取消自动换行的。
7. 第十二行作用是在每个内层for循环结束后换行,即在输出完九九乘法表一行后换行。
8. 第十四行打印一个字符串。
小结:通过这个程序熟悉print的用法,for循环的用法,以及range函数的特点。
|
课堂中提到的方法:
for i in range(1,10):
output = ''
for j in range(1,i+1):
output+= "%s*%s=%2s "%(i,j,i*j)
print output
---------------------------------------------------
作业六:
取一个列表中前两位大的数字
#!/usr/bin/python NumList = [1,2,3,2,12,3,1,3,21,2,2,3,4111,22,3333,444,111,4,5,777,4222,46,33,45,65555] max_num = 0 |
利用单循环来同事去除两个两个数。
作业七
二分查找法(利用递归函数)
num_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22] def erfen(find_num,num): |
作业八
利用函数完成用户的注册登录功能
#!/usr/bin/python
#encoding: utf-8
import getpass
user_list = {}
def new_user():
username = raw_input('please input your new name:')
if username in user_list:
print '%s is already exits!!' %username
else:
passwd = getpass.getpass() #已密码不显示的方式输入。
user_list[username] = passwd
def old_user():
username = raw_input('please input your name:')
passwd = raw_input('please input your passwd:')
if username in user_list:
if user_list[username] == passwd:
print 'login successfull!!'
else:
print 'login fail!!'
else:
print 'login fail!!!'
CMD = {'n' : new_user , 'o' : old_user}
def main_menu():
ppp = '''
新用户注册:n
老用户登录:o
推出:q
'''
while True:
try:
choice = raw_input(ppp)
except (KeyboardInterrupt, EOFError): #捕捉ctrl+ D 的错误输出。
choice = 'q'
if choice not in 'noq':
print 'please input again'
continue
if choice == 'q':
break
CMD[choice]() #通过取字典的key,选择来执行函数
if __name__ == '__main__':
main_menu()
| 作业九 |
log日志前十排序,其中包括重复的。利用函数简单的html输出
#!/usr/bin/python
#coding:utf8 def openFile(log):
with open(log) as f:
content = f.readlines()
return content def countLine(fn):
content = fn
count_dict = {}
for line in content:
line = line.split(' ') # string 通过split 转换为list
local_ip,uri,code = line[0],line[6],line[8]
#利用元组来作为key,然后统计数量
count_dict[(local_ip,uri,code)] = count_dict.get((local_ip,uri,code),0) + 1
#这个排序的功能网上copy的,不了解原理
count_dict = sorted(count_dict.items() ,key=lambda item:item[1],reverse=True)
return count_dict def detailLine(fn):
count_dict = fn
#下面进行重复行计数为一行。
n = 1 #取行计数
num = 0 #用于判断'统计数量'是否出现一样的
# print ('-----IP------------------URI----------CODE---count---')
# for i in count_dict:
# if n <= 10: # 取前十
# if i[1] != num:
# print('%-10s%20s%5s%10s ---->no%s' % (i[0][0], i[0][1], i[0][2], i[1], n))
# num = i[1]
# n += 1
# elif i[1] == num:
# print('%-10s%20s%5s%10s' % (i[0][0], i[0][1], i[0][2], i[1])) with open('count.html','w') as f:
res = "<table border='1'>"
res += '<tr><td>IP</td><td>URI</td><td>CODE</td><td>COUNT</td></tr>'
for i in count_dict:
if n <= 10:
if i[1] != num:
res += '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>'% (i[0][0],
i[0][1], i[0][2], i[1])
num = i[1]
n += 1
elif i[1] == num:
res += '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>' % (i[0][0],
i[0][1], i[0][2], i[1])
res +='</table>'
f.write(res)
def main():
first = openFile('access.log')
second = countLine(first)
detailLine(second) if __name__ == '__main__':
main()
| 作业十, |
生成随机验证码:
方法一:
import string,random source = string.digits + string.ascio_lowercase
print ("".join(random.sample(source,6))) 方法二:
checkcode = ''
for i in range(6):
current = random.randrange(0,6)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0-9)
checkcode += str(temp)
print(checkcode)
| 作业十一 |
利用快排,来对列表数字进行排序。
a = [ 65,2,1,3,6,1,3,4,1,3,6,7,8243,3] def kuaipai(arr):
if len(arr) <= 1:
return arr
num = arr.pop() #在列表中pop弹出一个对象来,作为比较的对象,然后列表中就少了这个对象
left = []
right = []
for i in arr: #因为里面已经没有了需要比较的对象,所以可以直接循环列表来比较。
if num > i:
left.append(i)
else:
right.append(i)
return kuaipai(left) + [num] + kuaipai(right) #用到了函数的递归 print kuaipai(a) 运行结果:
[1, 1, 1, 2, 3, 3, 3, 3, 4, 6, 6, 7, 65, 8243]
Python小课题练习作业的更多相关文章
- Python[小甲鱼-002用Python设计第一个游戏]
–Code——————————————————————- print("----------第一个小游戏----------") temp = input("猜一下我现在 ...
- Python小工具--删除svn文件
有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...
- python小练习(自己瞎倒腾)
python小练习 在网上无意中看到一个问题,心血来潮写了写,觉得比较有意思,以后遇到这种有意思的小练习也记录下. #!/usr/bin/env python # -*- coding:utf-8 - ...
- python小练习之二
title: python小练习之二 tags: 新建,模板,小书匠 grammar_cjkRuby: true --- python小练习之二 需求:实现用户登录,用户名和密码保存到文件里,连续输入 ...
- Python小代码_2_格式化输出
Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...
- Python小代码_1_九九乘法表
Python小代码_1_九九乘法表 max_num = 9 row = 1 while row <= max_num: col = 1 while col <= row: print(st ...
- python小练习---TCP服务器端
针对于上一篇分享python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html我继续按书中内容,向下进行这里需要强调一个事py3 ...
- python小练习:使用循环和函数实现一个摇骰子小游戏。游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“大”,3<=总值<=10为“小”。然后告诉玩家猜对或者是猜错的结果。
python小练习:使用循环和函数实现一个摇骰子小游戏.游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“ ...
- python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。
python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...
随机推荐
- 自定义xml配置文件之dtd文件校验
用了很多第三方库,也看了些源码,总是想如果自己写一个类似的库,读取xml配置文件(properties配置文件比较简单) 该如何给配置文件添加头,添加校验,因为xml配置文件相对于properties ...
- #82. 【UR #7】水题生成器
链接:http://uoj.ac/problem/82 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 —— 水题生成器. 每道题目都有一个正整数的难度值.水题生成器虽然强大但是 ...
- cvLoadImage,cvCloneImage的内存泄露问题
本文转自: http://hi.baidu.com/%C3%A8%D1%DB%D3%E3/blog/item/9d947e1b2b05555742a9adfd.html/cmtid/9872c2260 ...
- ios 自定义加载动画效果
在开发过程中,可能会遇到各种不同的场景需要等待加载成功后才能显示数据.以下是自定义的一个动画加载view效果. 在UIViewController的中加载等到效果,如下 - (void)vi ...
- (转)RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、FLASH、EEPROM的区别
RAM(Random Access Memory) 随机存储器.存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器.这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使 ...
- sql中保留2位小数
问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2 ...
- springMVC中jackson的使用(包含JsonFormat 时间格式)
前台使用ajax,后台 springMVC Java下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Ja ...
- vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等
vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...
- Python 目录和文件基本操作
今天在写一个小工具的过程中发现对目录和文件的基本操作不是很熟,特此把遇到的常用操作总结汇总下. 获取当前路径:os.getcwd() 目录操作:1.创建目录:os.mkdir('目录名')2.创建多级 ...
- UVA 1664 Conquer a New Region (Kruskal,贪心)
题意:在一颗树上要求一个到其他结点容量和最大的点,i,j之前的容量定义为i到j的路径上的最小边容量. 一开始想过由小到大的去分割边,但是很难实现,其实换个顺序就很容易做了,类似kruskal的一个贪心 ...