首页 > 编程 > Python > 正文

python基础1

2019-11-06 06:09:06
字体:
来源:转载
供稿:网友
pycharm快捷键ctrl+d 复制行ctrl+x 删除行ctrl+/ 注释''' 多行注释,只能用于模块头部shift+↑或↓ 选择shift+alt+↑或↓ 移动行ctrl+alt+L 美化代码tab 补全命令在终端中执行py文件:python g:/test.py 1. 变量name = "liming"age = 25PRint(name, "'age is ", age)  #print()用来打印,  ,用来连接name,age="zhangsan",232. 常量全部大写NAME='miling'MySQL_CONNECTION=""3. name = 'Alex'name2 = namename = 'longmingwang' print(name, name2)#longmingwang Alex4. 在pycharm中文件->设置->editor->文件和代码模版中修改python script中添加#author xinwang这样所有的新建python文件都会有这行注释5. 在python2中input:输入的数字就是数字,"alex"是文本,alex是变量raw_input:输入全部是文本在python3中input:输入的全是文本6. '''打印多行文本7. 例子name = input("please input your name:")age = int(input("please input your age:"))job = input("please input your job:")msg = ('''information of user %s---------------------------name : %sage  : %djob  : %s''') % (name, name, age, job)print(msg)8. getpass:在pycharm中无效1 >>> import getpass2 >>> p=getpass.getpass('input your passWord')#输入密码时用getpass代替了input3 input your password4 >>> print(p)5 aaa9. os:在python中执行系统命令import osprint(os.system("top"))os.mkdir("/home/wangxin/test)print(os.system("ls -l /"))保存命令输出:rs=os.popen("df").read()print(rs)10.sysimport sysprint(sys.argv)  #参数print(sys.path)11. if ... else模拟登录:user = 'alex'passd = 'alex'username = input("username:")password = input("password:")if username == user:print("the username is  correct...")if password==passd:print ("welcome to login")else:print("but your password is invalid")else:print("连用户名都没蒙对,滚粗!")优化:if username == user and passd==password:print("welcome to login")else:print("your username or password is invalid!")age=21guessnum=int(input("guess age:"))if age==guessnum :print("got it! so smart!")elif guessnum>age:print("elder than age")else:print("smaller than age")12. for   i in 列表:age=21for i in range(10):   #range(10)=[0,1,2,3,4,5,6,7,8,9]    guessnum=int(input("guess age:"))    if age==guessnum :        print("got it! so smart!")        break  #不往后走了,跳出整个循环    elif guessnum>age:        print("elder than age")    else:        print("smaller than age")13. 程序执行顺序n = int(input("n="))if n > 1:print("n>1")elif n > 2:print("n>2")else:print("heha")print("end")结果:n=8n>1end14. 字符串格式化输出name="liming"print("I am %s" % name)万恶的+:开辟多个内存空间print("my name is "+name+"!")15.列表====数组age=9name=["minglong","minghu","mingchong",3,age]列表名[索引]print(name[0]) #"minglong"print(name[-1]) #age只会从左到右取: name[0:2]       #["minglong","minghu"]name[-3:-1]name[:6]#前五个name[:]全部name[2:6][2:4][0][1]赋值name[1]="newname"name.insert(2,"minggou")#在2元素前插入name.append("alex")#在列表最后插入删除:name.remove("minggou")#删除找到的第一个为minggou的项name.pop(7) #不加参数默认为-1del  #删除内存中的数据,全局使用del student[4:6] #删除第4,5del student #删除列表步长:student[0:8:2]个数:student.count("s2")查找值:判断是否存在: "s2" in studentstudent.index("s2")#找到的第一个s2的索引位置eg:改掉里面所有的s4:for i in range(student.count('s4')):i=student.index("s4")student[i]="444"清空:student.clear()扩展:student1.extend(student2)反转:动作,无返回值student.reverse()排序:student.sort()#python3中字符串和数字不能一块排序复制:copy:浅层复制student2=student.copy()eg:student = [1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12]student2 = student.copy()student[0] = 54print(student)print(student2)student[4][0]=64365464print(student)print(student2)结果为:[54, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12][54, 2, 3, 4, [64365464, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [64365464, 7, 6, 5], 43, 32, 12]deepcopy:深层复制import copystudent2=copy.deepcopy(student)eg:import copystudent = [1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12]student2 = student.copy()student3 = copy.deepcopy(student)student[0] = 54print(student)print(student2)print(student3)student[4][0]=64365464print(student)print(student2)print(student3)结果:[54, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12][54, 2, 3, 4, [64365464, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [64365464, 7, 6, 5], 43, 32, 12][1, 2, 3, 4, [5, 7, 6, 5], 43, 32, 12]长度:len(student)16.元组:不可修改( )tuple17.字符串str.strip() ---删除两边空白-空格,tabstr.split() ---str没变,得到个列表"|".join(['a','bc','1']) ---将列表中元素(必须都是字符串)用|拼成字符串 :a|bc|1"".join(['a','b','c'])-->abc"" in "alex li" ----判断空格"1234".isdigit()----判断字符串是否是纯数字组成,True'fe'.isalpha()----是不是字母'feAFE'.isupper()----是不是全是大写'fwef'.islower()----是不是全是小写ord('c') -->99chr(99) -->c格式化:formatmsg = "name={0},age={1}"print(msg.format('liming', 27))"alex".center(40,"-")  #------------------alex------------------"alex".find("ex")#2,返回所引print("abcd".endswith("d")) #Trueprint("abcd".startswith("a"))#True字符串是列表:for i in 'abcd':print(i)eg:生成六位验证码:import randomyanzhengma=[]for i in range(6):jj=random.randrange(0,2)if jj==0:#数字temp=random.randrange(0,10)yanzhengma.append(str(temp))else:temp=random.randrange(65,91)r=chr(temp)yanzhengma.append(r)yanzhengma="".join(yanzhengma)print(yanzhengma)18. 数据运算%         -----除法的余数,判断正奇数// -----商的整数部分!= -----不等于== -----等于赋值:左边一定是变量        = -----赋值   += -----相加;c+=a-->c=a+c        -=andornot位运算:计算机中能存储,表示的最小单位,是一个二进制位byte(字节)=8bit1kbyte=1024byte1Mbyte=1024kbyte1Gbyte=1024Mbyte1 1 1 0 1 1=600 0 1 1 0 1=1360 & 13 =12   ---按位与运算60 | 13 =61   ---按位或运算60 ^ 13=49    ---按位异或~60=195-256=-61   ---按位取反 64<<1=128       左移1位64>>1=32 右移1位19.死循环while Truei = 0while True:i += 1if i>50 and i<60:continueprint("i=", i)if i==100:print("fuck!!!")break20.字典{}:无序d={key1:value1,key2:value2,key3:value3}d[key2]=value_2_neweg:d = {"001": {"name": "liming","age": 25,"address": "henan"},"002": {"name": "zhangsan","age": 65,"address": "yongxia"},"003": {"name":"lisi","age":85,"address":"jinan"}}d["002"].pop("age") --->删除age:65print (d["002"]["age"])取出所有的keys列表d.keys() 取出所有的values列表d.values()判断key是否存在"003" in d   ---->True循环for key in d:print(key) print(d[key]) 取值不抱错: d[]可能会报错setdefault:存在时就直接取出(相当于get),没有就设置默认值后取出print(d.setdefault("003",{"name":"sim"}))get: d.get("003")删除:d.pop(key)d.popitem() -->随机删除21. 退出程序exit("sorry")打印出列表中索引号:for i in enumerate(range(5)):print(i)结果为:(0, 0)(1, 1)(2, 2)(3, 3)(4, 4)22.set集合---无序,不可重复创建:s={123,456,789,852,46}s=set([])#调用了构造函数__init__添加元素:add:s.add(123)update:列表或元组或字符串;for循环加入s.update([1,2,3])#一次添加多个元素s.update("abcdabcd")#新增了'a','b','c','d'清空:s.clear()差异:s.different(s1)#s中存在,s1中不存在s1.symmetric_difference(s)#并集中去掉交集差异更新:s.different(s1)#求差异更新到s中s1.symmetric_difference_update(s)移除:remove:s.remove(111)#不存在时会报错discard:s.discard(123)#即使不存在也不会报错pop:s.pop()   #随机删除,不建议使用交集:s.intersection(s1)s.intersection_update(s1)并集:s.union(s1)23.函数,在py文件中可直接定义,不需要一定在class中定义,参数传的是引用    默认参数:      def fun1(x,y,z='ok'):            print (x,y,z)            return  x+y  #没有return时默认是none            print()      #不会被执行       调用:fun1(2,3,'ss')   #2 3 'ss'            fun1(2,3)       #2,3,'ok'    动态参数:       *args,将传进来的参数放在一个元祖中            eg:                def ff(*args):                print(args)            ff("nilian","hello","world")    #args=('nilian', 'hello', 'world')            ff(("nilian","hello","world"))  #args=(('nilian', 'hello', 'world'))            ff(["nilian","hello","world"])  #args=(['nilian', 'hello', 'world'])                        循环的放进元祖中:            ff(*"hello")                    #args=('h', 'e', 'l', 'l', 'o') <class 'tuple'>            ff(*("hello","world"))          #args=('hello', 'world') <class 'tuple'>            ff(*["hello","world"])          #args=('hello', 'world') <class 'tuple'>        **args:将传进来的参数放在字典中            def ff(**args):                print(args,type(args))                        参数:变量=''                ff(name="liming",age=21)    #args={'name': 'liming', 'age': 21} <class 'dict'>            参数:**{字典}                ff(**{'name':"liming"})     #args={'name':'liming'} <class 'dict'>        万能参数:            def f(*args,**args):            f(1,2,3,name='zhangsan',age=21)            字符串有个函数:format(*args,**args)    全局变量:大写        任何作用域都能访问        修改全局变量,先:声明global 变量名 再:变量名=''         python是面向函数编程.封装到函数,    内置函数:        abs:绝对值        bool():0,None,False,"",(),[],{}为False        all():全为True,才为True,如all([1,2,None])为假        any():有一个True,就为True,如any([1,2,None])为真        bin():二进制0b        oct():八进制0o        hex():十六进制0x            utf-8:一个汉字三个字节,一个字母一个字节        gbk:一个汉字两个字节,一个字母一个字节        bytes():转化为字节,如bytes('lisa啊',encoding='utf-8')-->b'lisa/xe5/x95/x8a' ,a-z不变,0-9不变,汉字会转化为3个字节,每个字节为两个十六进制        str():str(b'lisa/xe5/x95/x8a',encoding='utf-8')-->'lisa啊' .字节转化为字符串操作文件打开文件:f=open('db','r',[encoding='utf-8'])   #只读,读的是字符串,乱码时要写对encoding                f=open('db','rb')   #以二进制读取,                f=open('db','w')    #只写,先清空                f=open('db','wb')   #以二进制写入,f.write(bytes('lisa',encoding='utf-8'))                f=open('db','x')    #文件存在则报错,不存在,则创建并写内容                f=open('db','a')    #追加,可读,不存在则创建,存在则只追加内容               +:可以同时读写:f.seek(1) #按字节调整读指针,跳过一个字节,有汉字(三个字节)会乱码)f.tell() #获取现在指针位置,一个汉字为三个字节                f=open('db','r+')   #读写,可读可写,因为读导致指针移到最后了,所以write在末尾(追加)                f=open('db','w+')   #写读,可读可写                f=open('db','x+')   #写读,可读可写                f=open('db','a+')   #写读,可读可写eg:f=open('db','r+',encoding='utf-8')r=f.read(1)   #汉字print(r)p=f.tell()    #3f.seek(p)f.write('lisi|35252')f.close()操作文件:f.read():读取,指针随着移动,无参数读全部,有参数时看打开方式:r:按字符读,rb:按字节读write():写入,wb时写入字节flush():将修改flush到磁盘readable():w模式打开时Falsereadline():读取一行,指针随着一行truncate():截断文件,指针后清空for line in f:一行一行的读取文件关闭文件:f.close()      with open('db','r') as f,open('db1','r') as f2:passpasscompile:将字符串编译成python代码,eval,exec来执行代码s="print(4)"r=compile(s,'<string>','exec')exec(r)exec:执行python代码,没有返回值,接收代码或字符串exec("print(23)")--->23eval:执行表达式运算,并返回值eval("print(23)")--->23,并返回Noneeval('8*8') ---->返回64dir:查看对象提供了什么功能divmod:得到商和余数,返回元组(商,余数)isinstance:判断对象是不是类的实例l=[]r=isinstance(l,dict)print(r)  -->False类:str,dict,liststr的实例:"alex"dict的实例:{}list的实例:[]24. import      import math:math是.py文件,里面有def函数例如sqrt,还有class     from math import sqrt:从math文件中引入def sqrt.25.ascii和字符转换
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表