Python3学习笔记4 - 基础知识

今天主要学习Python3的基础语法知识

1.注释

python使用#号来表示注释,在语句前面加上#号,解释器就知道了这句是注释

2.代码缩进

if a > 10:
    print(a)

在语句的末尾加上分号,下一行缩进(默认占4位),则表示改行代码与之前代码属于同一个代码块

3.python的数据类型

整数:0,1,100,-200,还包括十六进制,如0x5b

/:除    //:地板除    %:求余

两个整数相除是浮点数,两个整数进行地板除是整数,两个整数进行求余是整数

9/3  =》 3.0    9 // 3  =》3           9 % 3   => 0

浮点数:1.2,3.14

字符串:可以用单引号'',或者双引号""表示,字符串内部可以带有转义字符\,比如\r,\n,如果要输出\号,需要带两个\\

可以在前面带有r来表示忽略转义字符,r符号相当于C#里面的@符号,转义字符不转义

print("abc\nefg")   =>    打印出abc,然后换行,再打印efg

print(r"abc\nefg")    =>   打印出abc,然后打印\n,在打印efg,不会换行

布尔值:python的真和假,用True和False表示,首字母是大写,这个跟其他语言是不一样的,c#和java里面是true和false

布尔运算跟其他语言也不一样,不是通过&,||,!这些符号来操作,而是通过and与运算,or或运算,not非运算

空值:python的空,用None表示

4.变量

python是动态语言,变量的值不是固定的,可以动态变幻的,这个跟c#和java是不一样的

a = 10   a = "123"

变量a可以先赋值整数10,然后在赋值字符串123,这都是可以的

python的变量类似于引用类型,申明一个变量,其实是在内存中将变量指向一个内存中的地址,所以变量是不会变得,变得是他所指向的值,比如:

x = 'ABC'    
y = x 
x = 'XYZ'
print(x)
print(y)

x   >>>  'XYZ'
y   >>>  'ABC'

变量x首先指向内存中的'ABC',将x赋值给y,是将x的指向赋予y,变量y也指向'ABC',然后再让x指向'XYZ',所以最后输出的值,x和y是不一样的

5.常量

python的常量,我们默认用大写的字母来表示,比如:PI = 3.1415926     A = 10

6.编码

ascii编码只能表示字母,数字和一些符号,中文可以使用utf-8和gb2312来编码

python的文件建议统一采用utf-8来编码,我们的文件用utf-8编码,然后读取到内存以后,python解释器会转换为unicode编码,操作完成保存到文件再用utf-8编码

一个中文字符,utf-8编码占3个字节;一个中文字符,gb2312编码占2个字节

可以通过ord函数来获取某个字符的ascii编码,比如ord("a") >>> 97

可以通过chr函数来获取某个编码表示的字符,比如chr(97)  >>> a

字符串经过加密以后可以转换为对应的字节码:
'ABC'.encode('ascii')
'中文'.encode('utf-8')
'中文'.encode('gb2312')

字节码经过解密以后可以转换为对应的字符串:
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
b'\xd6\xd0\xce\xc4'.decode('gb2312')

在接口调用中经常会碰到对方返回过来的信息,中文内容会是一串字节码,这是因为经过utf-8或者gb2312加密了,只要做对应编码的解密就能看到中文了

可以通过len()函数获取字符串的长度,len("ABC")  >>>  3

7.格式化

占位符: %d  整数   %f   浮点数    %s   字符串   %x    十六进制

在python中使用 % 号来进行占位操作

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('zhang', 100)
'Hi, zhang, you have $100.'

占位符可以表示占几位,数字的话可以表示精确到几位小数

%3d 占三位,但是空位不补0,%03d 占三位,空位补0,%.2f  精确到小数点后两位,这个会四舍五入

也可以使用format()函数来进行格式化

'Hello {0}, 开销占了{1:.2f}%'.format('zhang', 20.128)
>>> Hello zhang, 开销占了20.13%

8.list和tuple

list:有序的集合,用中括号[]表示

names = ['zhang', 'wu', 'wang', 'lin']
从前到后顺序:0,1,2,3
从后往前顺序:-1,-2,-3,-4
append('chen') 添加元素,默认添加到末尾
insert(1, 'liao') 插入元素,在指定位置插入元素,后面的元素索引都向后移
pop() 默认删除末尾元素,会把删除的元素返回回来
pop(2) 可以指定删除的索引

list中的元素不限制类型,可以是整型,浮点型,布尔型,字符串
甚至可以把一个list添加到另外一个list,组成多为数组
names.append(['us',1,'au'])

tuple:有序的列表,元组,用小括号()表示

tuple的元素是不能变得,这个不能变,指的是指向不能变
如果元素是整型,字符串,那就不能改变
如果tuple里面有个元素是list,那么这个元素就必须是list,但是list里面的值是可变的

list和tuple都可以组成多维数组来读取

9.条件判断

if elif else,每个if和elif,else后面都是跟冒号

height = input("请输入你的身高:")
weight = input("请输入你的体重:")
height = float(height)
weight = float(weight)
bmi = weight / height
if bmi < 18.5:
    print("过轻")
elif bmi < 25:
    print("正常")
elif bmi < 28:
    print("过重")
elif bmi < 32:
    print("肥胖")
else:
    print("严重肥胖")

10.循环

循环操作主要通过while,for x in list

计算1到10的求和

sum = 0
for x in range(1, 11):
    sum = sum + x
print(sum)
sum = 0
n = 1
while n < 11:
    sum = sum + n
    n = n + 1
print(sum)

range()函数可以获得对应的整数序列

range(10)表示0到10,不包括10的整数序列,range(1,11)表示1到11的整数序列,不包括11,其实就是1到10

通过list方法,可以把range的序列转换为list:list(range(5))    >>>   [0,1,2,3,4]

 可以通过break跳出循环,通过continue跳出本次循环,直接进入下一个循环,用法跟c#和java的一样

 11.字典dict

 python的字典跟c#的一样,其实就是key-value的模式,不过使用不一样,python通过{}来表示,{"age": 30, "gender": "female", "sex": "love" }

 dict的每个key都是不一样的,但是可以对一个key重复赋值,后面的赋值会替换前面的赋值

dict可以通过in或者get()方法来判断是否存在key

>>> 'zhang' in d
False

>>> d.get('zhang')
>>> d.get('zhang', -1)
-1

可以通过pop(key)的方法删除对应的key,这个方法会返回被删掉的key对应的value

dict的优点是,查找和插入速度快,而且这个速度不会因为key的增加而变慢,缺点是占用大量的内存

dict查找为什么快,这个有点跟我们去字典里面查找汉字差不多,先在索引表里面查找这个字对应的页码,

然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

dict添加key,存放value 的时候,会先根据key计算这个key的哈希值,然后在内存中这个哈希所在的空间存入value,因为每个key都是不一样的,所以存放的地方都不一样

要保证key是不变的,那么key必须使用不可变的对象,所以可以使用整数,字符串这些不可变得,但是不能使用list,因为list是会变得

如果用list作为key,会报key无法计算哈希值的错

12.set

set和dict类似,只不过set不存放value,存的都是key,set里面的key都是不一样的

给set()函数新增一个list参数,就可以获取一个set

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

可以通过add(key)和remove(key)给set新增和删除key,重复添加key不会改变set

两个set可以做并集和交集的处理,交集就获取相同的key,并集就合并key,重复的key会被排除

 

转载于:https://www.cnblogs.com/zfylzl/p/9788814.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值