循环:
循环有两种写法,每一种都有不同的用法,在不同的场景中用不同的循环
第一种:while 循环
while True:
print ("我是死循环")#这是一个死循环
a = 0
while a<10:
print ('我要打印10遍')
a = a + 1#这是一个常规的循环写法,就是一定,要有结束的标准,有结束的条件,要不循环就成了死循环
举个栗子:
从1加到100的和
def func(a,b):
sum = 0
while a<=b:
sum += a
a += 1
return sum
print (func(1,100))#把这个封装成函数,然后不仅可以算1到100的和,还可以算任意数值到任意数值的和
第二中循环方式:for 循环,这种循环更多用法是遍历
a = '我的元素要一个一个蹦出来'
for m in a :
print (m)#意思是把每个元素循环拿出来
for循环更多的用处是遍历有下标类型的元素,比如:字符串、列表、元组、集合等,当然一些算法也会用
还是看例子:打印九九乘法表
for i in range(1,10):
for j in range (1,i+1):
print ('%d*%d=%d'%(j,i,i*j),end = ' ')
print (end = '\n')
循环中还有两个关键字:continue,break
for a in range (10):
if a == 1:
print ('我是1,但是我还会继续循环')
continue
print ('我是打印不出来的')
elif a == 5:
print ('我是5我要结束循环')
break
print ('我是打印不出来的')
print(a)
#这个是打印的结果,contiunue会结束本次循环然后进行下一次循环,所以数字1没有打印出来,直接打印2;break直接终结循环,所以5没有打印出,后面的循环也结束了
0
我是1,但是我还会继续循环
2
3
4
我是5我要结束循环
循环暂时就到这里,下面说下文件的读写操作,主要是txt格式的文件,其他word /excel暂时先不说
file_object = open(file_name,access_mode = ‘r’)
file_name 是文件的路径,可以是相对路径和绝对路径 access_mode:是文件的模式,包括r(读)、w(写)、a(执行)、r+/w+/a+都是读写模式,但是个各自的特性保持一致,这个下面会有详细介绍
读模式中如果在该路径没有找到该文件,则会提示错误(r+也是这个特性)
fileDir = 'D:\\file.txt'
fo = open(fileDir,'r')
print (fo.tell())#这个是打印当前光标所在的位置下标,刚打开为0
print (fo.read(50))#这个打印的是前50个字符,如果不写,默认打印全部的内容
print (fo.tell())#打印当前光标位置此时贯标位置在51
print ('光标的位置是:',fo.seek(10,0))#移动光标,不管光标的位置在哪,此时光标的位置都是1,1代表了光标从零开始移动了一个字符
#后面的0 意思就是0模式,一般不写
print (fo.tell())#此时打印结果是10
print (fo.read(50))#光标移动了50位
print (fo.tell())#此时打印结果是61,原因是前面光标移动了10位
print ('光标的位置是:',fo.seek(10,0))
print (fo.tell())#此时打印结果还是10
print (fo.readline())#读取文本文档第一行,返回Str
print (fo.readline())#这一行和上一行之间有空行,原因是换行符占了一行
print (fo.readlines())#读取文本文档所有行,返回列表,以行为元素
print (fo.read().splitlines())#读取所有行,去掉换行符
#贯标移动的方式还有1模式和2模式,主要是针对二进制的
fo = open(fileDir,'rb')#rb模式为二进制的读模式
print (fo.read(50))
fo.seek(2,1)#从光标当前位置移动了2位,正数向前,负数向后移动
print (fo.tell())#此时光标位置为52
fo.seek(2,2)#从尾部开始光标向后先前移动了2位,负数向后
print (fo.tell())#此时光标位置为190,该文本文档一共188个字符
fo.close()#关闭该文件,此时无法对该文件进行操作了
print (fo.read(50))#这时候会报错
写模式中如果在该路径没有找到该文件,则会在该文件下新建该文件夹,不过每次在写入之前程序都会把原本的文本文档内容清空,重新写入(w+也是此种特性)
fileDir = 'D:\\file3.txt'
fo = open(fileDir,'w')
#print (fo.write(['1\n','asdff']))#不能写入列表,只能写入字符串
fo.seek(5)
fo.write('我是第一行\n我是第二行\n')#从第六位开始写此时没有保存文字只是在缓冲区,只能写入字符串
fo.flush()#写入磁盘,保存文件
fo.close()#关闭文件,同时也有保存的功能
执行模式中如果文件不存在,则新建文件,文件如果存在则追加写,在文件的最后一行开始追加(a+也有此特性)
fileDir = 'D:\\file3.txt'
fo = open(fileDir,'a')
fo.write('我是第二行\n我是第三行\n')
fo.flush()#写入磁盘,保存文件
好了这个差不多就是我知道的了,暂时先这样,还有一种文件的操作方法我写下
fileDir = 'D:\\file3.txt'
fileDir1 = 'D:\\file4.txt'
#这种方法可以同时操作多个文件进行读写,意思是把open (fileDir,'w')赋值给a,open(fileDir1,'a')赋值给b
with open (fileDir,'w') as a ,open(fileDir1,'a') as b :
a.write('sdaf')
b.write('424234')
a.flush()
b.flush()
a.close()
b.close()
再说一下列表生成器
before = [12000,5000,90000,1000]
after = [int(one*0.9)for one in before ]#后面可以加if 判断 例如:加if one >5000,此时结果是[10800, 81000]
print (after)
#打印结果是[10800, 4500, 81000, 900]
冒泡排序说一下
冒泡是从开始的下标开始两两对比,如果前面的比后面的大那么把,前面的移后一位,直到第一轮比完,得出最后一位的数字最大,然后再次从头来过,得到倒数第二位的最大数字,一直循环直至结束,下面是代码,了解一下,就是第一轮要比len(alist)-1次,第二轮要比len(alist)-2次,直至结束
alist = [12,32,56,2,1,43,6]
for i in range(len(alist)-1):
for j in range(len(alist)-1-i):
if alist[j] >alist[j+1]:
alist[j],alist[j+1] = alist[j+1],alist[j]
else:
pass
print (alist)