[Python]Python 的基础知识

本文全面介绍了Python编程语言的基础知识,涵盖了变量定义、数据类型转换、条件语句、循环控制、函数定义、错误处理、文件操作等内容,适合初学者快速入门。

Python 的基础知识

速度过一遍。

其实 Python 这门语言还挺简单,语言特性基本和 JavaScript 一个叼样,所以说那么简单我他妈还不如学Python,JavaScript 太烦了,ES6 / ES7 / ES8 那么多玩意还不如搞 Python 一劳永逸。

print() 是一个和 console.log() 一模一样的东西

通常,我们用 JavaScript 打印东西的时候,会用到 console.log()

console.log('holy crap')
复制代码

那用 Python 打印,是用 print()

print('holy crap')
复制代码

我的经验告诉我,print() 这个玩意和 console.log() 一样,是 debug 最好的办法。把觉得有问题的地方都打印一遍。

字符串和数字

'holy crap'
123456
复制代码

和 JavaScript 一样的逻辑。

变量

JavaScript 有 var / const / let

现在看起来 Python 可以之间定义,只用赋值就可以了。

people = 'frankietang'
print(people)
复制代码

也是自上到下运行,重新定义的值会直接覆盖掉。

salary = 3500
salary = 0
print('your salary:' + str(salary))
复制代码

input()

input() 是一个新玩意。就是可以把你在终端输入的东西给获取出来。类似事件?也不太像。

可以获取到用户输入的东西。

happen = input('What\'s happening?')
print('Suggestions:' + happen)
复制代码

str() , int() , float() , type() , len()

字符串同样是要用 \ 来转义,或者 ""

test = 'What\'s happening?'
test = "What's happening"
复制代码
转义字符描述
(在行尾时)续行符
\反斜杠符号
'单引号
"双引号
\a响铃
\b退格(Backspace)
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数yy代表的字符,例如:\o12代表换行
\xyy十进制数yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

不会直接查,不用记。

type() 就是看属性的,也不用记。

test = '123'
print(type(test)) # <type 'str'>
复制代码

len() 看长度的。

print(len('123')) # 3
复制代码

整数是 int() ,没有小数点的那种。

浮点数是 float() ,有小数点的那种。

play = str(int(input('你每天看片的时间?'))*7)
print('您一周玩手机' + play + '小时')
复制代码

就是可以一直转类型,多少层都可以。

条件语句

就是 if 和 else,还有一个 elif

num = 1
if num < 0 :
    print(num + 1)
else :
    print(num - 1)
    
# 0
x = 1
if x > 1:
    print ('x > 1')
elif x < 1:
    print('x < 1')
else:
    print('x = 1')

# 1
复制代码

布尔值

就是 Ture 和 False

其中Python把 0 、空字符串 '' 和 None 看成 False,其他数值和非空字符串都看成 True 。

“与”“或”“非”三种运算 与运算:只有两个布尔值都为 True 时,计算结果才为 True。 或运算:只要有一个布尔值为 True,计算结果就是 True。 非运算:把True变为False,或者把False变为True。

and 和 or 运算的一条重要法则:短路计算

a = True
print a and 'a = T' or 'a = F'
#输出为“a = T”
复制代码
  1. 在计算 a and b 时, a 是 True,则整个计算结果必定取决与 b,因此返回 b。
  2. 在计算 a or b 时, a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a。

所以 Python 解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

whliebreakcontinueexit()

while 是循环,break 是结束,continue 是不再执行下面的语句,回到 while 。

while True:
  a1=input('认罪吗?请回答认罪或者不认')
  a2=input('认罪吗?请回答认罪或者不认')
  if a1 == '认罪' and a2 == '认罪':
    print('两人都得判10年,唉')
  elif a1 == '不认' and a2 == '认罪':
    print('a1判20年,a2判1年,唉')
  elif a1 == '认罪' and a2 == '不认':
    print('a1判1年,a2判20年')
  else:
    print('都判3年,太棒了')
    break
    
# 认罪吗?请回答认罪或者不认不认
# 认罪吗?请回答认罪或者不认认罪
# a1判20年,a2判1年,唉
# 认罪吗?请回答认罪或者不认认罪
# 认罪吗?请回答认罪或者不认认罪
# 两人都得判10年,唉
# 认罪吗?请回答认罪或者不认认罪
# 认罪吗?请回答认罪或者不认不认
# a1判1年,a2判20年
# 认罪吗?请回答认罪或者不认不认
# 认罪吗?请回答认罪或者不认不认
# 都判3年,太棒了
复制代码

exit() 也可以结束循环

a = 0
while True:
    a = a + 1
    if a == 2:
        exit()
print(a)
复制代码

列表

举个例子

list = [1,2,3,[4,5],6]
print(list[1]) # 2
print(list[3][1]) # 5
print(list[-1]) # 6
print(list[0:4]) # [1, 2, 3, [4, 5]]
print(list[1:3]) # [2, 3]
print(list[1:]) # [2, 3, [4, 5], 6]
print(list[:2]) # [1, 2]
复制代码

插入数据用 append()

list = [1,2,3,[4,5],6]
list.append(7)
print(list) # [1, 2, 3, [4, 5], 6, 7]
复制代码

字典

其实就是 key 和 value 的意思。

举个例子,这个是字典包列表

dict = {a:['甲','乙','丙'],b:['A','B','C']}
print(dict[1][0]) # 甲
print(dict[1]) # ['甲','乙','丙']
复制代码

还有列表包字典

list = [{1:'甲'},{2:'乙'},{3:'丙'}]
print(list[1][2]) # 乙
print(list[1]) # {2: '乙'}
复制代码

for 循环

和 JavaScript 同理

a = [1,2,3]
for i in a:
    print(i) # 123
复制代码

其实就是等于

a = [1,2,3]
i = a[0]       #把列表a里面的第0个数据放到i里面
print(i)
i = a[1]       #把列表a里面的第1个数据放到i里面
print(i)
i = a[2]       #把列表a里面的第2个数据放到i里面
print(i)
复制代码

如果要从字典里面取值,用下面这种操作

dict = {'a':1,'b':2,'c':3,'d':4}
for i in dict :
    print(i+':'+str(dict[i]))

# a:1
# b:2
# c:3
# d:4
复制代码

还有一个叫 range() 可以生成整数数列

for i in range(3):
    print(i) # 012

for i in range(13,17):
    print(i) # 13,14,15,16

for i in range(3):
    print('a') # aaa
复制代码

函数

funtion() 同理

def people(name):
    print(name+'早上好')

people('邓嘉麟')
复制代码

return() 也不太难理解,例如下面这个例子,就是返回了一个字符串

def age(i):
    if i < 12:
        return '是小朋友啊'
    elif i < 18:
        return '是少年啊'
    else:
        return '嗯,永远18岁'

n = age(30)
print(n)
复制代码

这里同样也有作用域这个概念,这里就不多加叙述了。其实可以理解为,外部是公交车,人人可以上,内部是私家车,私人可以上。

try...except...

看一个例子

num = [0,1,2,3]
for x in num:
    try:
    #尝试执行下列代码
        print (6/x)
        #使用6除以num中的元素,并输出
    except ZeroDivisionError:
    #除非发生ZeroDivisionError报错,执行下列代码:
        print('0是不能做除数的!')
        #打印“0是不能做除数的!”
        
# 0是不能做除数的!
# 6.0
# 3.0
# 2.0
复制代码

就是错误后也运行,不过会抛出自己的写的异常。

还有一个 pass,就是直接跳过,执行下一轮循环。

num = [0,1,2,3]
for x in num:
    try:
        print (6/x)
    except :
        pass

# 6.0
# 3.0
# 2.0
复制代码
  1. except后面什么也不跟,直接加冒号。意味着,只要报错就执行下面的代码,不管是什么错误类型。
  2. 报错后执行的代码,你也可以只写一个'pass','pass'的意思就是:什么都不做。'pass'的存在意义是占个位,维护格式完整。比如except语句后面要求你要执行点什么报错后的程序,但你又什么都不想执行,那就pass好了。

encode() , decode() , ord() , chr()

decode 的作用是将其他编码的字符串转换成 unicode 编码,如str1.decode('gb2312'),表示将 gb2312 编码的字符串转换成 unicode 编码。

encode 的作用是将 unicode 编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将 unicode 编码的字符串转换成 gb2312 编码。

ord()函数主要用来返回对应字符的 ascii 码,chr()主要用来表示 ascii 码对应的字符他的输入时数字,可以用十进制,也可以用十六进制。

print('邓嘉麟'.encode('gbk'))
print(b'\xb5\xcb\xbc\xce\xf7\xeb'.decode('gbk'))
print(ord('麟'))
print(chr(40607))
复制代码

open() 方法

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

**注意:**使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')
复制代码

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
复制代码

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener:

mode 参数有:

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

默认为文本模式,如果要以二进制模式打开,加上 b 。

file 对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1file.close()关闭文件。关闭后文件不能再进行读写操作。
2file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3file.fileno()返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4file.isatty()如果文件连接到一个终端设备返回 True,否则返回 False。
5file.next()返回文件下一行。
6[file.read(size])从文件读取指定的字节数,如果未给定或为负则读取所有。
7[file.readline(size])读取整行,包括 "\n" 字符。
8[file.readlines(sizeint])读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
9[file.seek(offset, whence])设置文件当前位置
10file.tell()返回文件当前位置。
11[file.truncate(size])截取文件,截取的字节通过size指定,默认为当前文件位置。
12file.write(str)将字符串写入文件,返回的是写入的字符长度。
13file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

举个例子

# -*- coding: UTF-8 -*-

# file1 = open('./abc.txt','r') # 只读
# filecontent = file1.read()
# print(filecontent)
# file1.close()

# file1 = open('./abc.txt','w') # 覆盖
# file1.write('张无忌\n')
# file1.write('宋青书\n')

file1 = open('./abc.txt','a') # 添加
file1.write('张无忌\n')
file1.write('宋青书\n')
file1.close()
复制代码

abc.txt 就长这个样子

周芷若
赵敏
张无忌
宋青书
复制代码

split()join()

join() 链接字符串

split() 拆分字符串

test1=['a','b','c']
print('-'.join(test1)) # a-b-c
test2='a b c'
print(test2.split(' ')) # ['a','b','c']
复制代码

对象

class Food() :
# 定义一个食物的类别
    delicious = True
    # 属性“好吃”为真
    def taste(self,people) :
    # 定义一个“品尝”的方法,参数有两个。其中self是系统预设关键词,代表的是这个对象本身,调用该方法时可省略这个参数的填写。
    # people是吃食物的人。
        print(people,'说:真香!')
        # 输出people,'说:真香!'
chaofan = Food()
# 定义一个食物,炒饭
print(type(chaofan))
# 输出食物炒饭的数据类型
print(chaofan.delicious)
# 输出食物炒饭的 delicious 属性
chaofan.taste('Frankie')
# 调用品尝的方法,Frankie 吃掉炒饭
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值