python基础01

1、python介绍及与其它开发语言比较:

  相比C、Java运行慢,但是代码简介,可以减小学习成本,加快项目进度。跨平台,支持Linux和Windows。

  C语言是所有高级语言的基础,若要研究python语言的原理,需要再看C。C语言比python快的原因就是,C语言是直接将代码转换为机器码,提供给机器运行。

  Python及Java、PHP等高级语言都是由各自的解释器编译成字节码,再由字节码转换为机器码提供给机器运行。

  Python按照解释器的不同可以分为三类:

    CPython:将代码解释为C语言的字节码,然后再转换为机器码(逐行编译)。现在默认的是这种。

    pypy:代码--》C语言字节码--》机器码(全部转换完成)--》运行    。解决Python运行速度相对较慢的问题。

    其它语言开发的Python:代码--》相应语言的字节码--》机器码。

    执行过程:打开代码文件--》词法、语法分析--》解释为字节码文件

  若看到.pyc结尾文件,即解释好的字节码文件。

  在命令行模式运行python文件:解释器位置python.exe python代码文件地址

                eg:C:Usersgit.git-THINKAppDataLocalProgramsPythonPython35python.exe  F:wangkcday01s3.py

2、字符编码

  ASCII码:美国标准,包括英文字母、数字及特殊符号等。一个字符占用一个字节。一个字节8位。

  万国码Unicode:每个字符至少占用两个字节。字母占用两个,前面由0补齐;中文占用3个字节。

  utf-8:万国码进行压缩,节约内存。英文占用1个字节;中文占用3个字节。

  gbk、GB2312:中文两个字节来表示

  扩展:乱码原因:文件编码及解释器编码不一致。

    文件编码:File-->default settings -->搜索coding-->File Encoding,

    解释器编码:可以通过在代码文件的第二行设置: # -*- coding:utf-8 -*-

          (py3默认为utf-8,py2默认为ascii。所以为了方便在第二行设置解释器编码格式,不管以后这段代码在哪里运行都是可以的)

3、IDE建议使用pycharm,常用设置:

  编码设置:File-->default settings -->coding-->File Encoding

  文本样式:通常第一行设置解释器所在的安装路径,第二行是解释器的编码格式。

      File-->default settings -->搜索temp-->File and Code Templates -->Python Script,在右边的文本框中输入:

      #!C:Usersgit.git-THINKAppDataLocalProgramsPythonPython35
      # -*- coding:utf-8 -*-

  按CTRL+滚轮滑动文本放大缩小:File-->setting-->搜索mouse-->General-->右侧的Mouse选项框中三个选项全选:Change font size(Xoom) with Ctrl +Mouse Wheel

  

4、变量:

  变量名:就是记录的该变量的值所在的内存地址。

    eg1:name1='wangkc'

      name2 = name1

      name1 = 'xingxing'

      print(name2) # 打印的还是‘wangkc’

    eg2: name1 = 'wangkc'

       name2 = 'wangkc'

       这里面py3做了内存优化,name1和name2使用的是同一个内存地址。

  变量名的命名:字母、数字(不能开头)、下划线

           不能是python里面的关键字

         可以使用下划线连接,增加变量名的可读性。

5、输入、输出语句:input、getpass(需导入import getpass)

  input:  num1 = int(input('请输入一个整数:')) 

      括号里面是提示信息,提示用户在控制台输入一个值,并将值赋值给一个变量

      注意:input得到的变量的值为字符串格式,如果需要进行数学运算等,需要进行强制转换:int(num1)--》转换为整数格式。

  getpass:隐式显示,在控制台输入的是显示不出来的,需要在cmd命令行格式执行该文件才能显示。    

import getpass

num1 = int(getpass.getpass('请输入一个整数:'))
if num1 == 1:
    print('good!')

  然后在cmd执行:C:Usersgit.git-THINKAppDataLocalProgramsPythonPython35python.exe F:wangkcday01s2.py

6、注释方法:

  #:单行注释

  “”“     ”“”或者'''  ''':多行注释

  快捷方式:选中然后按CTRL+?

7、while 条件表达式:

     循环体

   eg1:求1-100直接所有数的和

i = 1
sum = 0
while i < 101:
    sum = sum + i
    i += 1
print(sum)

8、continue(直接跳出本次循环,直接开始下次循环)、break(跳出整个循环):

   eg1:求1到100之间所有数的和,使用break:

i = 1
sum = 0
while True:
    sum = sum + i
    if i == 100:
        break
    i += 1
print(sum)

   eg2:求1/2/3/4/5/6/8/9的和

 

i = 1
while i < 10:
    if i == 7:
        i += 1  #这一行代码要在continue前面,否则,代码执行会进入死循环,不断的打印6
        continue
    print(i)
    i += 1

  

9、for循环:注意这里for循环只能用for 变量1 in 变量2格式。

list1 = ['li','','','']
for name in list1:
    print(name)

10、if条件分支语句:

score = int(input('请输入你的分数'))
if score >= 90:
    print('优秀')
elif score >= 80 and score < 90:
    print('良好')
else:
    pass    #pass 表示通过,不做任何操作

  

11、运算符:   %取余 ,//整除 , ** 几的n次方

  a: i = i+1 同 i += 1

  b: and(两边都True则为True)、 or(有一个True则为True)

  c: in(包含   a = 'i' in 'comein'  ,一般用于判断某个字符串或者列表中是否包含某个元素。)

12、占位符:%s字符串,%d数字

  str = 'welcome %s come our home,her age is %d' % ('wangkc',18)

13、数据类型:

  1)整数:a = 18或者a = int(18)

       a = '18'

      转换:b = int(a)

  2)布尔boolean:True或者False

    1为True,0为False

    ‘’空字符串为False,其它为True

print(int(True))
a = ""
if not a:
    print('yes')

  

  3)字符串:定义str(),强制转化、字符串拼接、字符串格式化(占字符%s)判断字符串a是否在字符串b中、移除索引空白、分割、长度、切片、索引

     a字符串定义:str1 = 'wang'  或者str2 = str("wang")

    b、转化:    

i = int(18)
str1 = str(int)
print(type(str1))  #class  'str'    
# type(变量名)  返回该变量的类型

    c、字符串拼接使用“+”:print('name'+'age')

    d、移除空白:变量名.strip()去除两侧的空白、lstrip移除左侧空白、rstrip移除右侧空白,注意空白包括空格和换行等。  

val = '   tian  yi youqing    '
new_val = val.strip()  #得到一个新的字符串,不会对原字符串产生影响。
new_val = val.lstrip()
new_val = val.rstrip()
print(val)
print(new_val)

    e、长度len(变量名)   

val = 'jjdjjdjd'
v = len(val)
print(v)

    f、索引 

val = 'ddfddd'
i = 0
while i < len(val):    
    print(val[i])
    i += 1

    g、分割   变量名.split('分隔符',[数字])

val = 'abc|def|hij|klm|nob'
val_list = val.split('|')
print(val_list)  #['abc', 'def', 'hij', 'klm', 'nob']
print(val.split('|',2))  #['abc', 'def', 'hij|klm|nob']    #后面的数字表示把前面的几个分割
print(val.split('|',-2))  #['abc', 'def', 'hij', 'klm', 'nob']

    h、切片  

val = 'abcdefghijk'
print(val[1:3])  #打印出索引为1到(3-1)的字符串  bc
print(val[:4])  # abcd
print(val[5:])  #fghijk
print(val[:-1])  #abcdefghij

  

  4)列表list:定义、判断是否包含、索引、长度、切片、末尾追加、插入、删除remove  del、修改、for循环

#列表创建
list1 = ['abc','ddf','iidk','kkk']
list2 = list(['abc','ddf','iidk','kkk'])

#判断是否包含
if 'abc' in list1:
    pass

#索引:
print(list1[0])

#长度
print(len(list1))

#切片:
print(list1[0::2]) #起始位:终止位:步长   ['abc', 'iidk']

#追加:list.append(元素),直接返回新的列表,不用再赋值了。如
list2 = list1.append('hhhhh')
print(list1,list2)   #['abc', 'ddf', 'iidk', 'kkk', 'hhhhh'] None    list2就是None
list1.append(11111)
print(list1)

#插入:insert(索引,元素)
list1.insert(0,'yyyyy')
print(list1)

#删除:remove(元素),  del list[n]
list1.remove(11111)
print(list1)
del list1[0]
print(list1)

#更新:赋值
list1[2] = 22222
print(list1)

#for循环轮询打印
for i in list1:
    print(i)

  

  5)字典:创建、key:value形式(根据索引名找到对应的值)、长度、增加或者是修改(因为字典是无序的,因此在增加时,若没有就是增加,有则修改)、删除、for循环

#创建
dict1 = {'name':'wangkc','pwd':1234,'age':18}
dict2 = dict({'name':'xiaoling','pwd':1234,'age':18})

#依据索引名称或者值
pwd = dict1['pwd']
print(pwd)

#长度
n = len(dict1)
print(n)

#增加或修改,无则增加,有则修改
dict1['no'] = 1
print(dict1)

#删除 del
# del dict1['age']
# print(dict1)

#for循环
for item in dict1:
    print(item)    #若是只是字典名,则默认是打印索引名

for item in dict1.keys():
    print(item)   #打印索引名

for item in dict1.values():
    print(item)  #打印索引值

for key,val in dict1.items():
    print(key,val)  #key和value 全部打印no 1 pwd 1234 name wangkc age 18

 

14、文件操作:

  a)打开读取:f1 = open('文件名','r')

      data = f1.read()

      f1.close

  b)关闭写入:f1 = open('文件名','w')

        f1.write('str')

        f1.close() 

  

  

  

原文地址:https://www.cnblogs.com/wangkc/p/6758398.html