python练习(一)
来源:互联网 发布:冒险岛源码 编辑:程序博客网 时间:2024/06/13 04:43
- 字符串替换
- 要求
- 解答
- 思路
- 代码
- 小结
- 方法二
- 整理list
- 要求
- 解答
- 思路
- 代码
- 小结
- 方法二
- 输出什么
- 思路
- 解答
- 答案
- 小结
- 生成随机数
- 要求
- 解答
- 思路
- 代码
- 小结
- 答案
- 查找文件
- 要求
- 解答
- 思路
- 代码
- 小结
- 以前写的
字符串替换
要求
编写一个函数,可以替换字符串内的一个或几个字串。
strreplace(str,oldString,newString)
解答
思路
1.查找
2.切片
3.重装
4.循环至结束
代码
#coding=utf-8def strreplace(str,oldString,newString): #方法一 while True : position = str.find(oldString) if position == -1: return str str = str[:position] + newString +str[position+len(oldString):]pstr = "Hello word and worldssp, and world"a = strreplace(pstr,"world","Tom")print a
小结
由于return的新字符串和旧字符串起不同的名字,结果在循环时由于各种考虑不周,导致各种死循环,修改后代码拖沓,最后还是取消了新字符串名。
方法二
def strreplace(str,oldString,newString): ns = str.split(oldString) return newString.join(ns)
真厉害,我学习的时候还在想join函数有啥用
整理list
要求
将list里的元素[1,2,3,4,5,6,7,8…..100]变成[[1,2,3],[4,5,6],[7,8,9]…..]
解答
思路
1.生成一个新列表
2.取3个数存入新列表
3.将新列表存入新新列表
4.循环
代码
def function(l): i=0 nl=[] nnl=[] for item in l: nl.append(item) i+=1 if i == 3: nnl.append(nl) i=0 nl=[] nnl.append(nl) return nnll = [x for x in range(1,101)]newl=function(l)print newl
小结
nl,nnl还要先赋个框,不然不允许使用append
看起来好长啊
方法二
def function(l): return [l[i:i+3] for i in range(0,len(l),3)]
???
???
???
发生什么了?
输出什么
阅读以下代码,写出输出
def elist(val,list=[]): list.append(val) return listlist1 = elist(10)list2 = elist(123,['a','b','c'])list3 = elist('a')print "list1 = %s" % list1print "list2 = %s" % list2print "list3 = %s" % list3
思路
这个我在错误集锦里看过类似的
解答
list1 = [10]list2 = [a,b,c,123]list3 = [10,'a']
应该是这样的,这就是在参数中使用可变类型的后果
答案
list1 = [10, 'a']list2 = ['a', 'b', 'c', 123]list3 = [10, 'a']
小结
我的心好痛,忽略了,这不是错误集锦中的一个,而是二合一,list1和3指向同一块地址,3刷新,1也跟着变。
生成随机数
要求
写一个函数,给定参数n,生成含有n个元素值为1~n的数组,元素顺序随机,但值不重复。
解答
思路
random函数不太记得怎么用了
1.生成一个随机数
2.根据是否重复,添加进列表
3.满了,结束
代码
import randomdef newrandom(n): l=[] while True: ra=random.randint(1,n) if not ra in l: l.append(ra) if len(l) == n : return ln=10nl=newrandom(n)print nl
小结
这回总不能用列表生成式了吧
答案
似乎把判断长度放到上面好一些?
可是放上面会多一次判断啊
查找文件
要求
遍历目录及子目录,抓取带有指定字符串的文件
解答
思路
这个我写过的,还和重命名结合到了一起,虽然以及忘了要调用os里的哪些东西了
1.获取当前目录下的全部文件及文件夹
2.检测
3.对全部文件进行递归操作
代码
#coding=utf-8import osdef findFile(ls,str): for wenjian in os.listdir(ls): if str in wenjian: print ls +wenjian if os.path.isdir(ls+wenjian): findFile(ls + wenjian + '/',str)fi="/home/sky/Desktop/lianxi/"find="a"findFile(fi,find)
小结
最开始由于没有判断是否是个文件夹所以导致报错。所以最初只能达成本目录下的搜索。
以前写的
#coding=utf-8import os import os.pathdef s(rootdir,oldId,newId): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for parent, dirnames, filenames in os.walk(rootdir): for filename in filenames: if filename.find(oldId)!=-1: newName = filename.replace(oldId, newId) print filename + "---->" + newName os.rename(os.path.join(parent, filename), os.path.join(parent, newName)) print os.path.join(parent,newName)s('/home/sky/Desktop/lianxi', 'da','asd')
虽然使用了walk函数使其不用递归。但是感觉还是递归短啊。
实际应用了一次,递归的因为没有文件夹打开权限翻车了
- python练习(一)
- Python小练习(一)
- spark python 练习(一)
- python小练习(一)
- python 实验5 字符串练习(一)
- 13、python网络编程练习(一)
- 剑指offer练习Python(一)
- Python List 练习实践(一)
- Python Sting 练习实践(一)
- python爬取数据练习(一)
- Python脚本练习一
- Python小练习一
- python练习一
- python 练习一
- Python练习一
- Python练习一
- Python爬虫练习笔记一
- python 修行之路(一)(购物车练习)
- Oracle密码过期the password has expired
- 一个简单的tweepy示范(Turtioul for tweepy by python)
- linux 编程视频完整版 linux 编程视频完整版,可能你不信,但是现在真的是都免费给, 千锋教育的Linux视频课程免费下载地址: http://pan.baidu.com/s/1c13ddvE
- 机器学习之实现简单的神经网络
- css 创建盒子(div)
- python练习(一)
- TCP
- Python输出语句乱码解决方式
- java 中的 split regular | 需特别注意
- [bzoj1629][Usaco2007 Demo]Cow Acrobats
- UDP
- 剑指offer
- 指针传值易注意点
- 深度学习笔记——理论与推导之Structured Learning【Markov Random Field】(十)