前言
python是一门便捷优雅的计算机语言,为了加入学校的自然语言处理实验室,我开始学习python,并在这里记录我的学习历程。
在学习python之前,我学过了一些C++,所以在C++学习里已经理解甚至适应了的东西,我就不会再在这里记录了,所以这个系列的笔记依然是自用的,我只会记录一些自己学之前不知道或不清楚的东西,并写下自己对它的理解。
编程规范
缩进 缩进就是在一行代码前打四个空格,也可以直接敲键盘上的tab。python对缩进的使用很严格,不会像C++那样每一行代码前都可以随意打空格或者直接顶格,所以在写代码时,没有要求就不要随意缩进;其次,在python里,要用到缩进的语句一般是代码段,比如 if 语句,for 语句和 while 语句。
句末无标点 不用像C++那样每句最后都要有个分号,这就是Python的优越性嘛。
注释 想给代码加注释,单行的话用#来加;如果要加多行注释,就得用三个单引号或三个双引号把注释括起来。
a = input()
b = input()
a = int(a)
b = int(b)
'''以上语句的意思是,
输入a和b,
定义a和b是整数'''
c = a + b
print(c)#输出a与b的和——c。
数据类型
整型 就是整数类型的数据,其实就是整数,有特点的是如果要用很大的数,比如1000000000,可以表示为 1_000_000_000_000。python中的数都没有大小限制。
浮点型 就是带小数点的数,可以用科学计数法,比如2.2e12就代表2_212_000_000_000。
字符串 用单引号或双引号把任意文本括起来,里面的文本就是字符串,但这里需要注意的是,字符串不包括外边的引号;
关于字符串的一些注意点
1. 单个字符:单个字符也属于字符串;
2. 关于引号:若要在字符串里表现单引号,就在字符串外用双引号,若要用双引号则相反;
但如果字符串里单双都有,则外面无所谓,里面的每一个引号前加一个转义字符 \ 就行了;
print("He said,\"I\'m fine,thank you!\"")
#输出 He said,"I'm fine,thank you!"
3. 转义字符:用 \ 可以转移很多种字符,比如 \n 表示换行,\t 表示制表符,\\ 表示 \ ;
若不希望 \ 在字符串中被理解成转义符,可以在引号前加一个 r 成为原生(raw)字符串,这样里面的 \ 就只是普通的字符了;但不能用到有关单双引号冲突的字符串,那会导致编译错误;
print(r"This\is\a\notebook.")
#输出 This\is\a\notebook.
4. 多行字符:可以用三个单引号或双引号将多行字符串括起来,例如:
print('''锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。''')
'''输出
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。'''
多行输出时,若不想换行,可在一行结尾加上撇杠 \ ,这样就直接两行合在一行输出;
print('''锄禾日当午,\
汗滴禾下土.\
谁知盘中餐,\
粒粒皆辛苦。''')
'''输出
锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。'''
布尔值 只有 True 和 False 这两种。
空值 用None表示,表示什么也没有,也不是0。
强制类型转换
数值类型(int、float、complex、bool)
整型 int(x)
- 将浮点型数据强制转换成整型,它会默认将小数点后的数值舍去,不存在四舍五入
- 将布尔值强制转换成整型,它会默认将True和False的值转变为1和0
- 复数不能强制转化成整型,它会报错
- 字符串能够强制转化为整型,但首先字符串必须是全数字,否则不行,会报错
- int只能对 int float bool str(必须是全数字) 进行转换
浮点型 float(x)
- 将整型强制转化为浮点型,它会默认在整型之后面加上小数点.0
- 将布尔值强制转化为浮点型,它会默认将Ture和False的值转化为1.0和0.0
- 复数不能转化为浮点型,它会报错
- 字符串能够强制转化为浮点型,但首先字符串必须是全数字,否则不行,会报错
复数 complex(x)
- 将整型强制转化为复数,它会默认在整型后面加上 0j
- 将浮点型强制转换为复数,同上
- 将布尔值强制转化为复数,它会将True转化为 1+0j,False转化为 0j
- 将字符串强制转化为复数,但首先字符串必须是全数字,否则不行,会报错
布尔值 bool(x)
- bool 可以转换所有的数据类型均为True
- 唯独有以下九种情况 会为False:
整数 | 浮点数 | 复数 | 布尔值 | 字符串 | 元组 | 列表 | 集合 | 系统关键字 | 字典 |
0 | 0.0 | 0j | False | "" | () | [] | set() | None | {} |
注:None 系统关键字 无特殊意义 代表啥也没有一般用于初始化变量的时候
容器类型(str、list、tuple、set、dict)
容器类型进行强制转化,只能相互转化,不能转化为数据类型。
字符串 str(x)
- 所有数据类型都可以强制转化成字符串str
- 规律: 在原有类型基础上,在外套一层引号即可
列表 list(x)
- 所有数据类型都可以强制转化成列表list
- 强制转换规律:
字符串→列表 | 把字符串当中的每一个字符当成列表中的新元素,其它都是在原有数据类型上,在外面套一个[]即可 |
字典→列表 | 会在外套一层 [] 同时只保留字典里的键,而忽略字典里的值 |
元组 tuple(x)
- 所有数据类型都可以强制转化成元组tuple
- 强制转换规律:如果是字符串,把字符串当中的每一个字符当成元组中的新元素,其它都是在原有数据类型上,在外面套一个 () 即可
- 将字典强制转化为元组时,它会在外套一层 () 同时只保留字典里的键,而忽略字典里的值
集合 set(x)
- 所有数据类型都可以强制转化成集合set
- 强制转换规律:如果是字符串,把字符串当中的每一个字符当成列表中的新元素,(列表中的字符串会无序排列,因为集合本是无序排列)其它都是在原有数据类型上,在外面套一个 {} 即可
- 将字典强制转化为集合时,它会在外套一层{}同时只保留字典里的键,而忽略字典里的值
其他重要转换格式
- dict(x):强制转化成字典dict
- repr(x):将x转化成一个表达式字符串
- chr(x):将整数x转化为一个字符
- unichr(x) :将一个整数x转换为Unicode字符
- ord(x):将字符x转换成为对应的整数值
- hex(x):将整数x转换成为一个16进制字符串
- oct(x):将整数x转换成为一个8进制字符串
- eval(str):计算在字符串中的有效python表达式,并返回一个对象
用type()函数可以判断数据类型;
变量
用途 变量用于存储数据;
规范 变量名可以是各种文字的字母,可以是数字和符号 _ ,但依然不能用数字开头;
注意赋值语句的左端是变量,右端是赋给变量的东西,数字和布尔值可以直接写,但是字符 串还是要用引号括起来;
连续赋值 可以在一句里进行多次赋值:
a=b=c=1
#依次将1赋值给c,b,a。
多重赋值 还可以用一个赋值号给多个变量按顺序赋值;
多个变量同时赋不同的值,值的数据类型可以不同:
year,month,day,date=2022,11,5,Saturday
"""等价于:
year=2022
month=11
day=5
date=Saturday"""
类型规定 变量得在需要的时候规定类型,因为一般默认输入的是字符串,所以可以用强制类型转换的方式来得到想要类型的变量,例如:
#输入a,将a的类型转换整型:
a=input()
a=int(a)
#或者将两句合成一句:
a=int(input())
“常量” 一般用大写字母表示常量,但是不能保证它不会被改变。
输入 输出
输入 用 input() 来输入,默认输入的是字符。对于输入数字来说,在 input() 外,可以做强制类型转换,也就是加上int()、float()、complex() 或 bool(),但是最好不要在输入时就强制转换,因为不知道后面会用到什么类型的数;
a = int(input())
'''等价于a = input()
a = int(a)'''
b = float(input())#注意,在python里面将数据强制转换成实型也就是浮点型,只能用float,不能用double!
c = complex(input())#将数值强制转换为复数。
d = bool(input())#强制转换为布尔值,只要是非零的数据都会输出True。
多行输入 可以用for循环来做,具体如下:
##指定行数输入,以输出10行为例:
a=[input() for i in range(1,10)]
##行数不定,以下面为例:
a,b,c=map(int,input().split())
s=[input() for i in range(1,a+1)]##在input语句后加上for循环语句,外面还要有方括号!
text=list(s)
for i in text:
i=int(i)
if i*i>b*b+c*c:
print("NE")
else:
print("DA")
输入提示 在运行时先打印出提示,引导用户输入数据,应注意括号里的提示语句作为字符串,外边要有引号。示例如下:
integer=input("Please input a number:")
#运行后会先输出 Please input a number: ,用户才可输入数据。
输出 用 print( ) 来输出。
逗号的应用 可以在括号里面用逗号隔开多个包在引号里的字符串,这样就会输出多个用空格隔开的字符串;
自动计算 里面也可以进行四则运算,它会输出结果;
解释函数 往里面写一个python,就会输出对于这个已经定义了的函数的描述。
print("I'm","your","father.")
'''会输出 I'm your father.
因为每个字符串中间都用逗号隔开,所以在输出的语句里,逗号就变成了空格。'''
运算符
算术运算符:大体与C++相同,有三点不同,“/”在python里就是传统意义上的除法,而“//”才是整除,“**”是乘方的意思,2**8就是2的8次方。
比较运算符:和C++相同,只是返回值不同,C++的返回值是0或1,而python的返回值是True或False。
赋值运算符:“=”就是赋值符,python也有自赋值运算符,格式同C++,注意在python里对一个数取相反数这样写:a=-a。
逻辑运算符:and or not ;返回值依旧是True或False。
后记
第一次实验室培训所学到的python知识还不多,好好巩固,继续努力!