Python基础知识以及字符串——第一、二天

1.对Python的理解

  • 解释型语言:
    执行一句代码生成一段字节码(与平台无关的中间码)代码在python解释器里执行,转换成目标平台(cpu)命令,再到cpu里执行。
  • 编译型语言: 是一次性将代码全部生成机器语言,再到指定cpu里执行,编译型语言是要到其他cpu中运行,代码需要重新编译。
  • 两者区别:
    解释型语言执行一句生成一段,编译型语言是一次性生成的;解释型语言有虚拟机,编译型语言无虚拟机;解释型语言可以在多平台运行,编译型在制定平台运行。
  • 定义理解:
    (1)Python是解释型语言,开发过程中没有编译环节。
    (2)Python是交互式语言,可以在提示符>>>后直接执行代码
    (3)Python是面向对象语言,支持面向对象的风格或代码封装在对象的编程技术,通过组合(类里写类)和派生(继承)来定义类。
    (4)Python是动态语言,在创建新的变量时,不去指定变量的类型。
  • Python的特点
    (1)易于学习:关键字较少,结构简单,明确定义的语法。
    (2)易于阅读:代码定义更清晰。
    (3)易于维护:代码相当易于维护。
    (4)库丰富:库丰富,跨平台,在UNIX、Widows、MCAC的兼容性都很好。
    (5)可移植、可扩展(加入C/C++程序)、可嵌入(将Python程序嵌入到C/C++)
    (6)编码快,但运行速度慢
    (7)应用广泛,适用于网络应用、数据建模、大数据应用、自动化等。
    (8)缩进很重要、很重要、很重要。

2.Python2和Python3的区别
暂时省略
可以同时下载两个版本的python,配置两个环境变量使用
编辑器pycharm备注多行代码快捷键Ctrl+/。

3.变量组成规则
(1)变量由字母、数字下划线组成。
(2)不能以数字开头。
(3)不能使用关键字(保留字)作为变量。
(4)尽量让变量命名变的有意义。

4.头部加入编码:

#!/usr/bin/python
# -*- coding:utf-8 -*-.
前两行固定,否则不生效,1字节=8位。

5.Python的注释

(1)单行注释:以#开头
(2)多行注释:用多个#,或者三个单引号 ‘’‘ “”“或者三个双引号“”“ ”“”,无论用什么都是成对出现的。

6.if条件语句举例

if weather==30print("简直热死个人")
elif weather==20print(“温度刚刚好”)
elif weather==-30print(“冻成冰棍了”)
elseprint(“今天没看天气预报”)

注意:
缩进的空格是可变的,但是同一个代码块的语句必须包含相同的缩进空格数,否则会报错。
if语句支持嵌套。Python的if后面是冒号,不和Java一样是括号。

7.将一行语句分为多行显示

(1)用 \ 将一行的语句分为多行显示,语句中如果有[] 、{}、()就不需要多行连接符。

totol = one + \
           two + \
           three

(2)还可以在一行显示多条语句,用分号隔开i

import sys; x = a+b;a=1,b=1; print(x)

8.数字类型以及标准数据类型
有四种数字类型:
(1)int(整型):如1,python3中没有long。
(2)bool(布尔类型):True、False。
bool为false的几种情况:None、“”、()、[]、{}、0
(3)float(浮点型):如1.23。
(4)complex(复数类型):如1+2j。
六种数据类型:
(1)Number(数字型)
(2)String(字符串)
(3)List(列表):列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
(4)Tuple(元组):写法类似list。
(5)Set(集合):创建一个空集合用 set()。
(6)Dictionary(字典):字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
不可变数据:Number、String、Tuple。
可变数据:List、Dictionary、Set。

9.字符串
(1)用+将字符串连接在一起,用*重复。
(2)\ 可以用来转义,使用 r 可以让 \ 不发生转义。如 r"this is a line with \n" 则\n会显示,并不是换行。
(3)Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
(4)字符串一旦创建不可修改,一旦修改,会重新生成字符串

10.切片范围

说明:逗号“,”分隔各个维度,“:”表示各个维度内的切片,只有:表示取这个维度的全部值,从0开始,第一位是x[0],-1为倒数第一位。

1.一维数组

(1)x[n]:表示获取第n+1个字符内容

(2)x[i:j] :表示获取a[i]到a[j-1]

(3)x[:n]:输出前n个字符

(4)x[:-n]:去掉最后n个字符

(5)x[n:]:输出从第n+1位开始的所有字符

(6)x[-n:]:取最后n个字符

(7)x[i:j:k]这种格式呢,i,j与上面的一样,但k表示步长(就是一组k个),默认为1时,和x[i:j]相同。

(8)x[::-1]是从最后一个元素到第一个元素复制一遍(反向)

2.二维数组
(1)x[:,0]取所有行的第0个数据,第二维下标位0的所有数据,第0列(从0开始)

(2)x[:,1] 取所有行的第1个数据

(3)x[:,1:]第一维全部取,即所有行,列上从第一列开始取,不要第0列

(4)x[1,:]是取第1维中下标为1的元素的所有数据,第1行(从0开始)

(5)x[:2,1:]第一维取下标2之前的,即第2行之前(0,1两行),列上从第一列开始取,不要第0列

3.三维数组

(1)x[1,1,2]表示第一维取1,第二维取1,第三维取2

(2)x[:,1,2]表示第一维全取,第二维取1,第三维取2

(3)x[:,1:,2]表示第一维全取,第二维取1及1之后的所有值,第三维取2

(4)x[:,1:,:2]表示第一维全取,第二维取1及1之后的所有值,第三维取2之前的值(0,1)

切片例子:
在这里插入图片描述
11.导入文件

import或者from...import

12.数值运算

运算 符号
+
-
*
/
取商 //
取余 %
乘方 **
&
l
异或(相同为0,不同为1) ^
取反 ~

13.循环语句
(1)break:在执行过程中终止循环,并且跳出整个循环。
(2)continue:在执行过程中终止当前循环,跳出该次循环,执行下一次循环。
(3)pass:pass为空语句,是为了保护程序结构的完整性。
(4)for循环
rang

for 变量名 in 字符串:
     print(变量名)   #可以把所有的字符串输出来
     
for i in range(0,10,1):
    print(i)            
         
  #输出结果:1 2 3 4 5 6 7 8 9


for i in range(10,0,-1):
    print(i)
    
#输出结果:10 9 8 7 6 5 4 3 2 1

14.in与not in
in只能跑哪判断单个字符或者连续的字符在不在其中,不能判断间隔1、3位置上的字符。

15.魔法字符串
(1)7个必须要背会的方法
join
split
find
strip
upper
lower
replace
(2)4个必须会的灰魔法
len
for循环
索引
切片
(3)魔法的解释加例子

1、capitalize () ——魔法:将字符串的首字母大写
2、casefold()——魔法:可以将未知的字符串对应的关系也变小写,即字符串中的所有字符变小写,比lower()更厉害
3、lower()——魔法:将字符串中的大写字母变小写
4、upper()——魔法:将字符串全部变大写
5、center(self,width,fillchar=None)——魔法:将字符串居中显示。width后面必须要带一个值,指字符串的长度,self可忽略,sub表示字符串的子序列,”None“的可填可不填,fillchar指的是可以用什么填充

test="hhhhh"
test1=test.center(20,"*")
print(test1)

输出结果:*******hhhhh********

6、ljust(width,fillchar=none)——魔法:在左侧填充字符
7、rjust(width,fillchar=none)——魔法:在右侧填充字符

8、count(self,sub,start=None,end=None)——魔法:计算一个指定的字符出现了几次,可以是多个字符
9、endwith(self, suffix, start=None, end=None)——魔法:以什么结尾,判断结果为true或者flase

10、startswith(self, prefix, start=None, end=None)——魔法:以什么开始,判断结果为true或者flase
11、find(self, sub, start=None, end=None) ——魔法:从开始往后找,找到第一个字符后,获取其位置,如果找不到,则返回-1。
12、index(self, sub, start=None, end=None)——魔法:和find作用相同,但区别是找不到,直接报错
13、format()——魔法:格式化字符串,将字符串中的占位符替换成指定的值

test = "i am {name},age {a}"
v = test.format(name='小明',a='10')
print (v)

#输出结果:i am 小明,age 10

*format()如果用字典的方式传进去,得加**才可以*
test = "i am {name},age {a}"
v = test.format(**{"name":"小明","a":10})
print (v)


#输出结果:i am 小明,age 10

如果中括号里面什么都不写,写{0} {1} {2},代表第一个占位符,第二个占位符,第三个占位符。下面就不用再写name=啥了,默认对应的,直接写值就行了,写3个值,就对应上面3个占位符,依次从左向右。

test = "i am {0} age {1} weight {2}"
v = test.format('小明','10','40kg')
print (v)


#输出结果:i am 小明 age 10 weight 40kg

14、format_map({})——魔法:format_map也是格式化,传入的值必须是这样的格式{ “name”: ‘小明’,“a”: 10 },这个格式就是一个字典格式

test = "i am {name} age {a}"
v = test.format_map({ "name": '小明',"a": 10 })
print (v)


#输出结果:i am 小明 age 10

15、isalnum(self)——魔法:判断字符串中只能由字母和数字,不能有特殊符号
16、isalpha(self)——魔法:判断字符串中是否都是字母(汉字也可以)
17、isdecimal(self)——魔法:判断字符串是否为数字(工作中常用)
18、isdigit()——魔法:判断字符串是否只包含数字,比isdecimal更厉害一些,特殊数字也可以,例如 ①
19、isnumeric()——魔法:判断是否是数字,比上两个更厉害,不仅可以识别特殊数字,还可以识别中文
20、isprintable()——魔法:判断是否可打印(\t,\n肉眼不可见的,为false)
21、isspace()——魔法:判断字符串是否是空格,一个或多个都返回true,“”为空或其他则返回false
22、istitle()——魔法:判断字符串是否是标题(标题的首字母大写,支持中文)
title()——魔法:将字符串转换成标题
23、isupper()——魔法:判断字符串是否都是大写字母(支持中文和数字)
upper()——魔法:转换成大写字母
24、islower()——魔法:判断是否都是小写字母(支持中文和数字)
lower()——魔法:转换成小写字母
25、join(self, iterable)——魔法:连接字符串,一般形式为“ ”join(字符串),“ ”里面填充什么都行

S = "今天是2019年11月7日"
v1 = " ".join(S)
v2 = "*****".join(S)
print (v1)
print(v2)


#输出结果:
今 天 是 2 0 1 91 17 日
今***************2*****0*****1*****9**********1*****1**********7*****

26、strip()——魔法:去除左右空白
27、lstrip()——魔法:去除字符左边的空格(包括\t \n),还可以去除指定的字符串,还可以移除指定字符的,如下

S = "gdhhhgertet"
v = S.lstrip('g')
print (v)                           

去除左边的g
#输出结果:dhhhgertet

28、rstrip()——魔法:去除字符串右边的空格 (包括\t \n)还可以去除指定的字符串,也可以去除右边的指定字符
29、maketrans(“A”,“B”) ——魔法:A和B作置换,配合translate一起使用

a = "fshfskjgjgfsghh"
b = a.maketrans("fs","22")
c =  a.translate(b)
print(c)

#输出结果:22h22kjgjg22ghh

30、partition(self, sep)——魔法:找到指定的字符,保留分割字符串,以分隔符将原字符串分成三部分,以()形式输出,如下

a = "hsdhgjghsgfsf"
print(a.partition("jg"))

#输出结果:('hsdhg', 'jg', 'hsgfsf')

31、rpartition()——魔法:从字符串右边开始以指定的字符分割符进行分割
32、split(“”,n)——魔法:以指定字符进行分割,进行分割n次操作,以数组形式输出

a = "hsdhgjghsgfsf"
print(a.split("s",3))

#输出结果:['h', 'dhgjgh', 'gf', 'f']

33、rsplit()——魔法:从字符串右边开始,以指定字符进行输出,但是还是从左往右输出的
34、splitlines()——魔法:只能根据换行符\n进行分割,里面可填写true/false,true时\n保留
35、swapcase()——魔法:大小写转换
36、replace(“A”,“B”,n)——魔法:将A替换成B,替换n次
37、isidentifier()——魔法:是否符合标识符规则
38、expandtabs(tabsize)——魔法:字符串加空格,与\t结合使用,加\n会变成表格

a = "fsdjsg\tggdgdf\nfsdjsg\tggdgdf\n"
b = a.expandtabs(10)
print(b)


#输出结果:
fsdjsg    ggdgdf
fsdjsg    ggdgdf
发布了17 篇原创文章 · 获赞 55 · 访问量 4438
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章