这个是为准备考研复试,希望做一个textCNN文本情感分析打语言基础的自学笔记,博主本身本科非计算机专业,如果网友们有幸看见本文,博客中内容如有疏漏,不吝赐教。
第0节:从零开始
按照编译器翻译的两种方式:分为编译和解释。当编译器以解释方式运行的时候,也称之为解释器。Python也具解释性语言的优势,虽然效率不如编译性语言但跨平台能力。
Python所具有的特点:完全面向对象、强大的标准库、大量的第三方模块。一般来讲Python的三种执行方式:用解释器执行、交互式方式执行以及集成开发环境。一般的,Python的源程序是一个特殊格式的文本文件,也就是说可以使用任意的文本编辑器做Python的开发。
Python是一个十分随意但又十分严谨的语言,就我目前的水平而言,在写程序时最好不要在代码前面加空格。同时,Python 2.x默认不支持中文,所以我也选择了Python 3.8的版本进行学习。(在代码中也尽量避免出现中文,以免日后在实际工作中出现兼容性问题)
由于构成Python的源码是开源代码,除了官方解释器(C语言开发——CPython),还有其他的解释器如:JPython、IronPython、PyPy等。
学习使用的Python版本为3.8.0,学习工具和开发工具为IDLE、Pycharm,参考书籍为《Python从入门到实践》。 安装好Python和其对应的工具,将配色方案选成Darcula,字体默认是Consolas,修改一下控制台和编辑器的字体字号,将字号修改为15。做好这些准备工作之后,就可以尝试输出:
print("Hello World!")
Python就可以正式开始学习了。
第1节:变量以及数据类型
目前对于现阶段的Python学习,一个面向对象的语言,要时刻记住:万物皆对象,变量皆为类
name = "class"
type(name)
>>> <class 'str'>
age = 18
type(age)
>>> <class 'int'>
1.1 关于变量名
从变量命名开始,在《Python入门与实践》这本书中的这段代码不同于之前所学习的C/C++和Java语言
message = "Hello Python world!"
print(message)
好像Python不需要刻意的去声明一个变量,这段代码直接就指定了message是一段字符串并且用print() 输出了message变量。初学阶段我暂时无法解释这个。
在Python中,普通变量的命名规则别无大异,如:不能包含空格、不能数字开头等。但抛弃了常用的驼峰表示法,改用下划线命名,如:my_name 或 my_function()
1.2 关于字符串
在现阶段我学习的Python当中,单引号和双引号的界限似乎不那么明显。在表示字符串的时候,既可以采用单引号,也可以采用双引号。单引号和双引号的转换也可以使用“\”来完成,如:
str0 = "This is a String!"
str1 = 'And this!'
str2 = "Cause I\'m python!"
str3 = "I\'ll say:\"Hello World!\""
print(str0) # This is a String!
print(str1) # And this!
print(str2) # Cause I'm python!
print(str3) # I'll say:"Hello World!"
另外,对于字符串也可以使用三引号(不区分双引号和单引号):
str5 = '''Hello!
java
"java"
'c'
c'''
print(str5)
关于字符串的几个方法,如title()、upper()、lower(),功能分别是每个单词首字母大写,全字符串大写,全字符串小写。
合并字符串的方法也很简单,和Java一样,可以使用"+"进行对字符串的合并(使用乘号 * 也可以重复拼接相同的字符串):
fist_name = "Ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello!"+ full_name.title())
str = "321"
print(str*50) #将显示321的50个循环输出
需要说明的是,数字和字符串也是不可以直接相连的,需要用*str()*方法进行转换
num = 2020
print("Happy " + str(num) + "th Years!" )
另外,也可以使用*strip()*删除字符串首尾空格、*lstrip()*删除头空格、*rstrip()*删除尾空格。
my_word = ' word '
print(my_word.strip())
my_word = " my word "
print(my_word.strip())
1.3 注释
单行注释使用“#”,多行注释使用三引号(可以使用单引号也可以使用双引号)
#单行注释
'''
多行注释
'''
1.4 数字
在Python中,幂用的是两个星号**。和之前学习的语言一样,Python也拥有相似的数字型数据类型,如float,int等。但是不需要声明它们的变量类型,直接定义名称就好了。那么我想查看数据类型要怎么做呢?可以使用type()方法:
type(object) #类名
type(name, bases, dict) #类名,基类的元组,字典
type() 不会认为子类是一种父类类型,不考虑继承关系。(此处区别于isinstance(),以后再学习这两个东西)
1.5 变量的输入与input()
input函数可以完成获取键盘输入的功能,具体使用如:
word = input("Just a word:")
print(word)
结果如下:
或者:
str1 = "Right"
str2 = str1 + "" + input()
print(str2)
输出如下:
但是如果输入内容并不是程序想要的结果,要如何进行类型转换:
str0 = "10.3"
print(float(str0))
这样将输入结果10.3。但是我以为Python中会有double的强制转换,但是并没有,所以我查了一下:Python 提供了将变量或值从一种类型转换成另一种类型的内置函数
int(x [,base ]) 将 x 转换为一个整数
long(x [,base ])将 x 转换为一个长整数
float(x ) 将 x 转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为 Unicode 字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
Python中的类型转换——原文
那么可以用下面代码测试一下:
price = int(input("请输入苹果单价:")) * float(input("请输入苹果的重量:"))
print(price)
1.6 格式输出控制与format()
在上面的代码中,可以看到最后的price是浮点型的。但是我希望最后可以进行小数点的末尾保留,这就需要用到格式化输出。Python的格式化输出和其他语言类似,可以使用%进行格式控制。
具体的控制方式是:
格式化字符 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制,%06d表示整数位数显示,不足用0补全 |
%s | 浮点数,%.02小数点后两位 |
%% | 输出% |
样例代码:
price = int(input("请输入苹果单价:")) *float(input("请输入苹果的重量:"))
print("%.02f" %price)
print("%d" %price)
print("%05d" %price)
最后的结果是:
除了常规的%格式控制,Python也提供了一个更为灵巧的格式控制方法:format()
format() 从Python2.6开始,基本语法是通过 {} 和 : 来代替以前的 % ,format 函数可以接受无限个参数,位置可以不按顺序。
基本使用方法:
>>> "{} {}".format("ABC","EFG") #默认顺序
'ABC EFG'
>>> "{1} {0}".format("ABC","EFG") #自定顺序
'EFG ABC'
>>> "{2} {0} {1}".format("AB","CD","EF") #自定顺序
'EF AB CD'
设置参数:
>>> print("name:{name} and age:{age}" .format(name = "LiMing",age = 18))
name:LiMing and age:18
以及使用字典和列表设置参数(虽然暂时没学,先照葫芦画瓢记下来)
#使用了字典
student = {"name":"LiMing", "age":18}
print("Name:{name} and Age:{age}".format(**student))
#使用了列表索引
teacher =['Zhang',40]
print("Name:{0[0]} and Age:{0[1]}".format(teacher))
输出结果:
Name:LiMing and Age:18
Name:Zhang and Age:40
数字化格式:
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
- 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
此外我们可以使用大括号 {} 来转义大括号,
具体事例如下:
PI = 3.1415926
print("{:.2f}".format(PI)) #保留两位小数
print("{:+.2f}".format(PI)) #带符号保留,如果数字是正则+,负则-
print("{:.0f}".format(PI)) #不带小数
print("{:0>9f}".format(PI)) #数字补零,PI总长度是9因此,将在前面补一个0
print("{:0<9f}".format(PI)) #后面补零,并将26约分成了30
print("{:.2%}".format(PI)) #百分百显示保留两位数字,注意是从3开始
print("{:.2e}".format(PI)) #指数计数法
print("{:>10f}".format(PI)) #右对齐
print("{:<10f}".format(PI)) #左对齐
print("{:^10f}".format(PI)) #居中对齐
输出结果如下:
更详细的内容可见:format()格式化函数