Python基础_day01

编译器与解释器

将其他语言翻译为机器语言的工具被称为编译器
编译器翻译的方式有两种,一个是编译、另一个是解释。两中方式的区别在于翻译时间的不同,当编译器以解释方式运行的时候,也称之为解释器
这里写图片描述

编译型与解释型速度

跨平台:每个操作系统都有对应的解释器,解释型跨平台性很好
速度:解释型速度相对来说较慢

python的设计哲学:最好只有一个方法来做一件事请,越简单越明确越好

Python的特点

  • Python是完全面对对象的语言
    函数、模块、数字、字符串都是对象,在Python中一切都是对象、完全支持继承、重载、多重继承、支持重载运算符,也支持泛型设计
  • Python拥有强大的标准库
    Python语言的核心只包括数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能
  • Python社区提供了大量的第三方模块,使用方法与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统多个领域
  • Python是个格式非常严格的语言,每行代码完成一个动作、注意缩进错误、

Python解析器对应名称

Python2.X默认不支持中文,主要原因是编码不支持
Python2.X的解释器名称是Python
Python3.X的解释器名称是Python3

Python3是主流版本,Python3.0并没有向下兼容,但是语法层面相差并不是很大

执行Python程序的三种方法

  • 解释器:python + 文件名
  • 交互式:python的shell,exit()函数用来退出shell,Ctrl+d也可以退出(Windows下为Ctrl+Z)
  • IPython:是python的一个交互式shell

Python的注释

# 单行注释
"""
这个是多行注释、也叫做块注释
"""

Python的运算符

运算符 作用
/ 获得高精度结果
// 或者整数除数
% 获取余数
** 幂,二次方
* 此运算符还可以得到指定个数的字符串

Python程序的执行原理

(1)CPU会先把Python解释器程序复制到内存中
(2)Python解释器会根据语法规则,从上到下让CPU翻译Python代码
(3)负责执行翻译完成的代码
这里写图片描述

Python解释器到底有多大?
Linux的python2.7版本的解释器只有3.4M


注意:Python变量的定义不需要定义类型,解释器会自动推导数据类型
type函数:查看变量的数据类型
在Python2.x中:
type (2 ** 32) int类型
type ( 2 ** 64) long类型
在Python3.x中
type (2 ** 32) int类型
type ( 2 ** 64) int类型
Python3已经将原来的long也认为是int

Python非常适合做数学计算,并且自动处理大数字,例如计算2的10000次方都可以轻松计算出来!
这里写图片描述

不同变量之间的计算

(1)数字之间可以直接计算,包括double与int等不同类型的数据,只要是数字就可以运算
(2) 如果变量是bool类型,True对应的数字为1,False对应的数字为0
(3)+ 运算符可以拼接字符串
(4)字符串变量可以和数字用*连接
(5)数字型变量和字符型变量之间不能进行其他的计算

Python的输入函数

pwd = input(“请输入密码\n”)
注意:input函数只能得到字符串

扫描二维码关注公众号,回复: 2476104 查看本文章

类型转换函数

int(x):将x转化为整数
float(x):将x转化为浮点数

print()函数的格式化输出

%s 字符串
%d 有符号十进制整数,%06d表示输出的整数显示位数,不足的地方用0补全
%f 浮点数,%0.2f表示小数点后只显示两位
%% 输出%

注意这与C的printf函数的符号使用区别,这个是直接使用 %链接的

查看python的关键字

import keyword
print(keyword.kwlist)

[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

import 关键字:导入工具包
python中变量名是区分大小写的

关于4空格与tab键

在开发python程序的时候Tab键和4个空格键不要混用,最好是直接用4个空格
if语句与下方的缩进是一个完整的代码块!

注意输入的只能是字符串,需要类型转换

age = int(input("请输入年龄:"))
print("年龄:%d" % age)

python中的逻辑运算符 and、or、not

pycharm使用技巧

Tab键可以统一向右缩进
Shift+Tab可以统一向左缩进

注意:if判断代码过长,可以加小括号换行,换行之后的条件必须加8个空格

如何产生1-100的随机数?

(第一个参数必须小于第二个参数)

import random
print(random.randint(0, 100))

python中的+=-=/=*=%=与C一样,//=是取整除、**=是幂赋值运算符

python需要注意的地方

  • 在循环中如果使用continue这个关键字,需要确认循环的计数是否修改,否则可能导致死循环
  • print()函数输出内容之后,会自动增加换行,print(“*“, end=”“)
  • python的九九乘法表
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%d*%d=%d\t"% (i, j, i*j), end = "")
        j += 1
    i += 1
    print()

这里写图片描述

常见转义字符:

符号 原意
\ 反斜杠符号
\’ 单引号
\” 双引号
\n 换行
\t 横向制表符
\r 回车

函数封装

封装函数的格式:注意函数命名应该符合命名规则

def 函数名():
        封装的代码

注意:不能在定义函数之前就使用函数,和C语言一致,或者先声明函数

pycharm调试工具

F8 Step Over 可以单步执行代码,会把函数调用看作是一行代码直接执行
F7 Step Into 可以单步执行代码,如果是函数,会进入函数内部

函数的注释方式:

def my_fun():
    """
    打印乘法表
    :return:无返回值
    """
    i = 1
    while i <= 9:
        j = 1
        while j <= i:
            print("%d*%d=%d\t"% (i, j, i*j), end = "")
            j += 1
        print()
        i += 1


my_fun()
def 函数名(参数1,参数2,参数3,...):
        函数体

模块的概念

模块:以.py结尾的文件就是一个模块,本质就是工具包,里面有工具函数,要使用的时候用import导入即可
模块名也是标识符,必须符合命名规则,比如以数字开头的文件是无法导入的

Pyc文件,c是compiled,即是编译过的意思

python中的数据类型

  • 数字型:整型、浮点型、布尔型、复数型(用于科学计算:比如平面场、波形问题)
  • 非数字型:字符串、列表、元组、字典、

非数字型都有的特点:
1、都是一个序列(sequence),也可以理解为容器
2、取值[]
3、遍历for in
4、计算长度、最大值、最小值、比较、删除
5、连接 + 和重复 *
6、支持切片

列表:list

在其他的编程语言叫做数组

列表的方法

序号 分类 关键字/函数/方法 说明
1 增添 列表.insert(索引,数据) 在指定位置插入数据
列表.append(数据) 在末尾追加数据
列表.extend(列表2) 将列表2的数据追加到列表
2 修改 列表[索引] = 数据 修改指定索引的数据
3 del列表[索引] 删除指定索引的数据
列表.remove[数据] 删除第一个出现的指定数据
列表.pop 删除末尾数据
列表.pop(索引) 删除指定索引的数据
列表.clear 清空列表
4 统计 len(列表) 列表长度
列表.count(数据) 数据在列表中出现的次数
5 排序 列表.sort() 升序排序
列表.sort(reverse=True) 降序排序
列表.reverse() 逆序、反转
  • 列表指定索引值越界,数组越界异常
  • extend方法把arr2(其他列表)中的内容追加到arr1里面 arr.extend(arr2)
  • 默认删除(弹出)最后一个元素 arr.pop(),pop方法返回被移除的元素
  • remove方法可以删除指定内容的元素,但是只能删除第一个符合条件的数据,如果数据不存在就会报错

del关键字:使用delete关键字,简写为del
del关键字本质上是用来将一个变量从内存中删除的
注意:如果使用del关键字讲一个变量从内存中删除,后续的代码就不能使用该变量了,在开发中最常用的是使用列表提供的方法去删除元素

元组 :tuple

元组与列表类似,不同之处在于元组的元素不能修改,列表使用 [ ] 定义,二元组使用 ( ) 定义

如果只想定义只有一个元素的元组:
single_tuple = (4) # 这种做法是错误的,解释器会误以为是加了括号的int类型
single_tuple = (4,) # 这才是正确的另一方式,需要在后面加逗号

元组只有两个方法:

方法 作用
元组.count(数据) 求该数据在元组中的个数
元组.index(索引) 取出元组中的数据

元组中通常保存的数据是不同的,实际开发中,除非能确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多,元组的应用场景:

  • 函数的参数和返回值,一个函数可以接受任意多个参数,或者一次返回多个数据
  • 格式字符串,格式化字符串后面的()本质上就是一个元组
  • 让列表不可以被修改,可以转换为元组

列表和元组之间的转换函数

list(元组)、tuple(列表)

字典 dictionary

  • 字典是除了列表以外的最灵活的数据类型,字典同样可以用来存储多个数据,通常字典用于存储一个物体的相关信息
  • 字典和列表的区别
    列表是有序的对象集合、字典是无序的对象集合
  • 字典用 { } 定义
  • 字典使用键值对存储数据、键值对之间使用 “,”分割
    key是索引、value是数据
    键和值之间使用“:”分割
    键必须是唯一的,值可以取任意数据类型,键只能用字符串、数字或者元组

字典的循环遍历:

student = {"name": "Tim",
           "age": 20,
           "scort": 66.6}
for k in student:
    print("%s:%s"% (k, student[k]))

这里写图片描述
字典和列表的混合使用

students = [{"name": "Tim","age": 40,"scort": 66.6},
            {"name": "LiLiLaLaLa","age": 30,"scort": 66},
            {"name": "Android","age": 20,"scort": 59.9},
            ]
for student in students:
    for k in student:
        print("%s:%s"% (k, student[k]))
    print()    

这里写图片描述

字符串

定义字符串使用" "''都是可以的,一般使用" "定义,和其他编程语言一致
注意:
1、虽然可以使用 \”或者 \' 做字符串的转移,但是在实际开发中:

  • 如果字符串内部需要使用 ",可以使用 ' 定义字符串
  • 如果字符串内部需要使用 ' ,可以使用 "定义字符串

2、可以使用索引获取一个字符串中指定位置字符,索引计数从0开始
3、也可以使用for循环遍历字符

方法 功能
len(字符串) 获取字符串的长度
字符串.count(字符串) 小字符串在大字符串中出现的次数
字符串.index(字符串) 获得小字符串第一次出现的索引
str3 = "hello hello"
print(len(str3)) # 10
print(str3.count("hello")) # 2
print(str3.count("abc")) # 0 查找子串出现次数,传入不存在的子串得到结果为0
print(str3.index("lo")) # 3
print(str3.index("abc")) # 出错,查找子串位置是若传入不存在的子串就会出错

字符串的常见操作

判断类型

方法 功能
string.isspace() 如果string中只包含空格则返回True
string.isalnum() 如果string中至少有一个字符并且所有字符都是字母或数字则返回true
string.isalpha() 如果string中至少有一个字符并且所有字符都是字母则返回true
string.isdecimal() 如果string中只包含数字,则返回True,全角数字
string.isdigit() 如果string中只包含数字,则返回True,全角数字、(1)、\uoob2
string.isnumeric() 如果string中只包含数字,则返回True,全角数字、汉字数字
string.istitle() 如果string是标题化的(每个单词首字母大写)则返回True
string.islower() 如果string包含一个区分大小写的字符,并且这些(区分大小写的)字符都是小写,则返回True
string.isupper() 如果string包含一个区分大小写的字符,并且这些(区分大小写的)字符都是大写,则返回True

查找和替换

方法 功能
string.startwith(str) 如果string以str开头则返回True
string.endwith() 如果string以str结尾则返回true
string.find(str,start = 0,end = len(string)) 检测str是否包含在string中,如果start和end指定范围,则只是检查是否在范围内部,若是则返回索引值,不是返回-1
string.rfind(str,start = 0,end = len(string)) 与find函数类似,只不过是从右边开始查找
string.index(str,start = 0,end = len(string)) 与find函数类似,只不过str不在string中会报错
string.rindex(str,start = 0,end = len(string)) 与find函数类似,只不过是从右边开始
string.replace(old_str,new_str,num = string.count(old_str)) 将string中的old_str替换成new_str,如果num指定,则替换不能超过num次

大小写转换

方法 功能
string.capitalize(str) 把字符串的第一个字母大写
string.title() 把字符串的每个单词首字母大写
string.lower() 转换string中的所有大写字母为小写
string.upper() 转换string中的所有小写字母为大写
string.swapcase() 反转string中的大小写

文本对齐

方法 功能
string.ljust(width) 返回原字符串右对齐,并使用空格填充至长度width的新字符串
string.ritle() 返回原字符串左对齐,并使用空格填充至长度width的新字符串
string.center() 返回原字符串居中对齐,并使用空格填充至长度width的新字符串

去除空白字符

方法 功能
string.lstrip() 截掉string左边的空白字符
string.rstrip() 截掉string右边的空白字符
string.center() 截掉string左右两边的空白字符

拆分和链接

方法 功能
string.partition(str) 把string分成一个3元素的元组(str前面,str, str后面)
string.rpartition(str) 类似于partition函数,只不过是从右边查找
string.split(str=”“,num) 以str为分隔符切片string,如果num有指定值,则仅分割num+1个字符串,str默认包含’\r’,’\t’,’\n’和空格
string.splitlines() 按照行(‘\r’,’\n’,’\r\n’)分隔,返回一个包含各行作为元素的列表
string.join(seq) 以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串

字符串中的转义字符
'\t' 在控制台中输出一个制表符,协助在输出文本时垂直方向保持对其
'\n' 在控制台输出一个换行符

**制表符的功能是在不使用表格的情况下在垂直方向按列对齐文本

转义字符 描述
\ 反斜杠符号
\’ 单引号
\” 双引号
\n 换行
\t 横向制表符
\r 回车

判断是否是数字的三种方法:(开发中常用的还是isdecimal方法)

# 都不能判断小数
num_str = "123"
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())

# isdigit与isnumeric的强大之处
num_str2 = "⑴"
print(num_str2.isdecimal())
print(num_str2.isdigit())
print(num_str2.isnumeric())

# isnumeric的强大之处
num_str3 = "一千零一"
print(num_str3.isdecimal())
print(num_str3.isdigit())
print(num_str3.isnumeric())
print(str.find("abc")) # 查找不存在的字符串返回-1,index方法则会报错
print(str.replace("world", "python")) # replace方法执行完毕会返回一个字符串,而不会改变源字符串

字符串去除空格、切割字符串、拼接字符串

print(str.strip()) # 去除所有的空格
print(str.lstrip()) # 去除左边的空格
print(str.rstrip()) # 去除右边的空格

str = "hello#world#java#python"
split = str.split("#") # 按照#切割字符串,默认按照不可见字符进行切割
print(split)
join = "#".join(split) # 按照#合并字符串
print(join)

下标和切片
注意可以使用倒序的方式来使用下标

# 将字符串转为列表,再得到逆序的字符串
str = "abcdefg"
str_list = list(str)
str_list.reverse()
print(''.join(str_list))

# 直接使用字符串切片功能逆转字符串
str = "abcdefgh"
print(str[::-1])
print(str[-1::-1])
Python的内置函数
函数 描述 备注
len(item) 计算容器中元素个数
del(item) 删除变量 del有两种方式
max(item) 返回容器中元素最大值 如果是字典、只是针对key比较
min(item) 返回容器中元素最小值 如果是字典、只是针对key比较
cmp(item1,item2) 比较两个值,-1 小于/ 0相等/ 1大于 Python3.x取消了cmp函数

注意:字符串比较符合以下规则:”0”<”A”<”a”

# 针对列表和元组进行切片
print([1, 2, 3, 4, 5][1:3])
print((1, 2, 3, 4, 5)[1:3])

# 由于字典是一个无序集合,使用键值对的方式保存数据,所以字典是无法切片的
# 列表和元组乘法运算
print([1, 2]*5)
print((1, 2)*5)
# print({"a": "z"}) error,因为key是唯一的

# 列表
l_list = [1, 2]
l_list2 = [3, 4]
print(l_list+l_list2) # 使用加号不会改变原有的列表,而是产生新的列表
l_list.extend(l_list2) # 此方法无返回值,直接改变l_list
l_list.append(5)
l_list.append([6, 7, 8]) # append方法会把列表当成一个元素插入到列表中
print(l_list)

l_list3 = (1, 2)
l_list4 = (3, 4)
print(l_list3+l_list4)

int 与 not in运算符

print("a" in "abcde")
print("a" not in "abcde")

这里写图片描述
完整的for循环

for 变量 in 集合:
    循环体代码
else:
    没有通过break退出循环,只有当循环结束后才会执行的代码
num = [1, 2, 3, 4, 5]
for n in num:
    if n == 3:
        break
    print(n)
else:
    print("完毕")
num = [1, 2, 3, 4, 5]
for n in num:
    print(n)
else:
    print("完毕")

其他

pass 关键字:pass代表空语句,就和java中的;是一样的
TODO(开发者姓名/开发者邮件) 功能描述
Linux上的Shebang符号(#!)
在要运行的python主文件在第一行加入 #! /usr/bin/python3即可,然后修改python文件权限为可执行!

猜你喜欢

转载自blog.csdn.net/m0_38032942/article/details/81273044