Python学习笔记_Day01

简介: Python学习笔记_Day01

环境准备


官方站点:http://www.python.org


IDE:集成开发环境


pycharm的配置


  1. 如果是第一次使用,打开后,出现以下内容,选择下面的“不导入配置”

1.png

2.如果是专业版,需要购买

2.png

3.选择界面风格

3.png

4.创建新项目,一个软件工程就是一个项目,对应一个文件夹

4.png

5.创建虚拟环境


Location: 项目目录,即代码文件存放的路径


Project Interpreter:解释器采用虚拟环境,相当于是把系统的python程序拷贝到了一个文件夹中,以后安装


python软件都安装到这个文件夹。将来项目完成了,不需要这个环境了,只要把虚拟环境目录删除即可。

5.png

  1. 如果上一步,自动创建虚拟环境出现故障,可以手工创建虚拟环境
# 创建虚拟环境 
[root@room8pc16 ]# python3 -m venv ~/nsd1903 
# 使用虚环境时,需要激活它 
[root@room8pc16 ]# source ~/nsd1903/bin/activate (nsd1903) 
[root@room8pc16 ]# python --version 
Python 3.6.7
  1. 修改pycharm项目的虚拟环境


File -> Settings -> Project: Day01 -> Project Interpreter -> 点右上角的齿轮 -> Add Local -> Existing Enviroment -> 点 击… -> 输入/root/nsd1903/bin/python

6.png

7.png

  1. 修改编辑文字大小


File -> Settings -> Editor -> font -> size 修改大小


python运行方式


  • 交互解释器
[root@room8pc16 devops0101]# source ~/nsd1903/bin/activate 
(nsd1903) [root@room8pc16 devops0101]# python 
>>> print("hello world!") 
>>> exit 
Use exit() or Ctrl-D (i.e. EOF) to exit
  • 文件形式 在pycharm项目名上右击选第四项,可以拷贝到项目的绝对路径
# vim hi.py 
print("Hello World!") 
(nsd1903) [root@room8pc16 day01]# python hi.py 
Hello World!

python语法


  • python使用缩进表达代码逻辑,推荐缩进4个空格


  • 有子语句的代码,后面都有冒号


  • 注释使用#号,在pycharm中可以按ctrl + /进行注释或取消注释


  • 多个语句在同一行,需要使用分号分隔,但是仍然不推荐。


输入输出语句

# 字符串必须写在引号中,单双引号没有区别 
>>> print('hello world!') 
# 一个print语句中,可以打印多项,123没有引号,表示数字。默认各项间用空格分隔 
>>> print('hao', 123, 'world') 
hao 123 world 
# 输出时,也可以指定各项之间的分隔符 
>>> print('hao', 123, 'world', sep='_') 
hao_123_world 
>>> print('hao', 123, 'world', sep='***') 
hao***123***world 
# 字符串可以使用+拼接 
>>> print('hello' + 'world') 
helloworld 
# 通过input获取键盘输入,input括号中的字符串是屏幕提示符,把用户输入的结果保存在变量num中,num是变量,使 用时不用像shell那样加$前缀。 
>>> num = input("number: ") 
number: 100 
>>> num 
'100' 
# 只要通过input读取,都是字符类型,字符不能和数字进行四则运算
>>> num + 10 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: must be str, not int 
# 可以通过int函数把num转换成整数,再和数字进行运算 
>>> int(num) + 10 
110

变量


会变化的量。常量不会变,表示字面本身含义的量不会变。100,'abc'这样的量是字面量,表示看到的字面本身含义。


为什么要用变量:方便,变量可以用有意义的名字。


变量的命名约定:


  • 首字符只能是字母或下划线


  • 其他字符可以是字母或下划线或数字


  • 区分大小写
>>> 2a = 10      # Error 
>>> _a = 5       # OK, 不常用 
>>> abc-1 = 10   # Error 
# 以下的两个变量是不一样的 
>>> a = 10 
>>> A = 100
推荐的命名方法:


  • 变量和函数名都用小写字母,如pythonstring


  • 简短,如pystr


  • 有意义


  • 多个单词间用下划线分隔,如py_str


  • 变量用名词,函数用谓词(动词+名词),如phone表示变量,用update_phone表示函数


  • 类名采用驼峰形式,如MyClass


使用变量

# 变量使用之前必须先赋值 
>>> print(a)      # a没有定义,所以报名字错误 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
NameError: name 'a' is not defined 
>>> counter = 0 
# 赋值运算自右向左运算。以下代码含义是将counter的值取出并加1,然后再赋值给变量counter
>>> counter = counter + 1 
# 上面代码可以简写为 
>>> counter += 1
# python之禅 
>>> import this Beautiful is better than ugly. 
Explicit is better than implicit. 
Simple is better than complex. 
……
美胜丑,明胜暗,简胜繁

运算符


算术运算:数学四则运算
>>> 5 / 3 
1.6666666666666667 
>>> 5 // 3     # 只保留商 
1
>>> 5 % 3      # 只保留余数 
2
>>> divmod(5, 3)    # divmod函数可以同时返回商和余数
(1, 2) 
>>> a, b = divmod(5, 3)   # 商和余数分别保存在a和b中 
>>> a 
1
>>> b 
2
>>> 2 ** 3   # 2的3次方 
8
比较运算
# 比较运算的结果是True或False 
# 字符串比较时,逐个字符进行比较,一旦出现结果就不再继续了。字母按ASCII值比较。 
>>> 'x' > 'abc' 
True 
# 在python中,支持连续比较 
>>> 20 > 15 > 10 
True 
>>> 20 > 10 < 15 # 相当于20 > 10 and 10 < 15 
True
逻辑运算符
# and两边的表达式都为真,结果才为真 
>>> 10 > 5 and 10 < 20 
True 
# or两边的表达式只要一边为真,结果就是真 
>>> 10 > 5 or 10 < 3 
True
# not颠倒真假 
>>> 10 > 5 
True 
>>> not 10 > 5 
False 
>>> 10 < 5 
False 
>>> not 10 < 5 
rue

数据类型


数字


  • int整数,没小数点


  • bool,布尔数,True的值是1,False值为0


  • 浮点数,有小数点


  • 复数。为了解决谁的平方是-1,数学家发明了复数


整数的表示的方式

# python默认以10进制输出,没有任何前缀的数字都认为是10进制数 
>>> 23 # 10进制 
23
>>> 0o23 # 0o开头表示8进制数 
19
>>> 0O23 
19
>>> 0x23 # 0x开头表示16进制 
35
>>> 0X23 
35
>>> 0b11 # 0b开头表示2进制 
3
>>> 0B11 
3
>>> 0x234 
564 
>>> 2 * 16 * 16 + 3 * 16 + 4 
564 
# 应用 
>>> import os 
>>> os.chmod('login.py', 755) 
(nsd1903) [root@room8pc16 day01]# ll login.py 
--wxrw--wt. 1 root root 87 7月 31 11:45 login.py 
>>> os.chmod('login.py', 0o755) # linux系统权限是8进制数,不是10进制 
(nsd1903) [root@room8pc16 day01]# ll login.py 
-rwxr-xr-x. 1 root root 87 7月 31 11:45 login.py

字符串


  • 字符串是用引号引起来的一组字符,单双引号没有任何区别。
# s1和s2分别用了单又引号,它们表示了完全相同的含义 
>>> s1 = 'hello world' 
>>> s2 = "hello world" 
# 将字符串tom赋值给变量name 
>>> name = 'tom' 
# s3中的name就是字面本身含义name 
>>> s3 = "hello name" 
>>> s3 
'hello name' 
# s4中的%s用后面变量name的值替换 
>>> s4 = "hello %s" % name 
>>> s4 
'hello tom' 
>>> "%s is %s years old" % ('tom', 22) 
'tom is 22 years old'
  • python允许使用三引号(三个连续的单引号或双引号)保存字符串的样式
>>> words = "hello\nwelcome\ngreet" >
>> print(words) # 打印时,\n转义为回车 
hello 
welcome 
greet 
>>> words # 内部存储时,回车保存为\n 
'hello\nwelcome\ngreet' 
# 三引号只是在输入时可以保留回车等输入时的样式,但是内部存储没有什么特殊 
>>> wordlist = """hello 
... welcome 
... greet""" 
>>> print(wordlist) 
hello 
welcome 
greet 
>>> wordlist 
'hello\nwelcome\ngreet'
  • 字符串相关操作
>>> py_str = 'python' 
>>> len(py_str) # 计算字符串的长度 
6
>>> py_str[0] # 取出第一个字符,下标为0 
'p' 
>>> py_str[5] 
'n' 
>>> py_str[6] # 如果下标超出范围,将会出现错误
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
# 下标为负数,表示从右向左取 
>>> py_str[-1] 
'n' 
>>> py_str[-6] 
'p' 
# 切片,切取片段 
>>> py_str[2:4] # 包含起始下标对应的字符,不包含结束下标对应的字符 
'th' 
>>> py_str[2:6] # 取切片时,下标超出范围不会报错 
'thon' 
>>> py_str[2:6000] 
'thon' 
>>> py_str[2:] # 结束下标不写,表示取到结尾 
'thon' 
>>> py_str[:2] # 起始下标不写,表示从开头取 
'py' 
>>> py_str[0:2] 
'py' 
>>> py_str[:] # 从开头取到结尾 
'python' 
>>> py_str[::2] # 步长值为2 
'pto' 
>>> py_str[1::2] 
'yhn' 
>>> py_str[::-1] # 步长为负表示自右向左取 
'nohtyp' 
# 成员关系着断 
>>> 't' in py_str # t在字符串中吗? 
True 
>>> 'th' in py_str 
True 
>>> 'to' in py_str # to虽然在字符串中,但不是连续的,返回False 
False 
>>> 'to' not in py_str # to不在字符串中吗? 
True 
# 字符串通过+实现拼接 
>>> 'hao' + '123' 
'hao123' 
>>> str(123) # 内建函数str可以把数字转成字符串 
'123' 
>> 'hao' + str(123) 
'hao123'
# 字符串重复 
>>> '*' * 30
'******************************' 
>>> '#' * 30 
'##############################' 
>>> 'ab' * 30 
'abababababababababababababababababababababababababababababab'

列表


使用[]表示列表。列表是容器类型的,它里面可以存储各种数据。

>>> alist = [10, 20, 30, 'tom', 'jerry'] 
>>> len(alist) 
5
>>> alist[0] 
10
>>> alist[-1] 
'jerry' 
>>> 30 in alist 
True 
>>> alist[3:] 
['tom', 'jerry'] 
# 列表支持修改内容
>>> alist[2] = 300 
>>> alist 
[10, 20, 300, 'tom', 'jerry'] 
# 通过append方法,可以向列表追加数据 
>>> alist.append('bob') 
>>> alist 
[10, 20, 300, 'tom', 'jerry', 'bob'] 
>>> alist * 2 
[10, 20, 300, 'tom', 'jerry', 'bob', 10, 20, 300, 'tom', 'jerry', 'bob'] 
>>> alist + 100 # 报错,列表不能和数字拼接 
>>> alist + [100] # 列表拼接

元组


元组可以认为是不可变的列表,其余完全一样。

>>> atuple = (10, 20, 300, 'tom', 'jerry', 'bob')
>>> len(atuple) 
6
>>> atuple[0] 
10
>>> atuple[2:4] 
(300, 'tom') 
>> atuple[0] = 100 # 报错,不能修改
# 单元素元组,必须有逗号,否则不是元组。 
>>> a = (10) 
>>> a # a不是元组,而是数字 
10
>>> b = (10,) 
>>> b 
(10,) 
>>> len(b) 
1

字典


字典是无序的,所以不能像字符串那样取下标和切片。

>>> adict = {'name': 'tom', 'age': 22} 
>>> len(adict) 
2
>>> 'tom' in adict # 'tom'是字典的key吗? 
False 
>>> 'name' in adict 
True 
>>> adict['name'] # 字典通过key取出value 
'tom' 
# 字典的key不能重复,赋值时,key存在则修改val,key不存在则新增 
>>> adict['age'] = 25 
>>> adict 
{'name': 'tom', 'age': 25} 
>>> adict['email'] = 'tom@tedu.cn' 
>>> adict 
{'name': 'tom', 'age': 25, 'email': 'tom@tedu.cn'}

数据类型分类


  • 按存储模型


  • 标量:字符串、数字


  • 容器:列表、元祖、字典


  • 按更新模型


  • 可变:列表、字典


  • 不可变:字符串、元组、数字


  • 按访问模型


  • 直接:数字


  • 顺序:字符串、列表、元组


相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
419 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
164 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
173 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
112 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
53 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
35 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
48 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
47 2
|
2月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
50 1