课堂视频
上午: https://ke.qq.com/webcourse/index.html#cid=2744006&term_id=102851992&lite=1&from=800021724&taid=34394249&vid=5285890806586236493
下午:https://ke.qq.com/webcourse/index.html#cid=2744006&term_id=102851992&lite=1&from=800021724&taid=34397164&vid=5285890806591883541
环境配置 掌握
下载对应的版本
选择安装路径 并设置环境变量
安装pycharm
https://www.jetbrains.com/pycharm/download/#section=windows
学习方法
参考官方教程: https://docs.python.org/zh-cn/3/tutorial/index.html
概念
解释器 python的安装版本;
C:\Users\zengy>python -V
Python 3.8.5
交互模式 在命令终端可以直接调试Python代码,交互模式
数字
Python支持加减乘除运算
>>> 1 +1
2
>>> 2+2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8/5
1.6
>>>
/ | 除法运算 | |
---|---|---|
// | 整除运算,结果取整数部分 | |
% | 取模运算,结果取余数 |
在Python中,可以使用 **
运算符来计算乘方
>>> 5 ** 2 # 5 squared
25
>>> 2 ** 7 # 2 to the power of 7
128
等号 (=
) 用于给一个变量赋值
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
在交互模式下,上一次打印出来的表达式被赋值给变量 _
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
- round 位python内置函数,主要做保留小数点位数,支持四舍五入运算
如果小数部位为 0 ,最多保留1个0>>> round(117.123456,4)
117.1235
>>> round(117.000000,4)
117.0
int 整型
数据不带小数点>>> type(20)
<class 'int'>
float 浮点型
数据带有小数点
>>> type(20.0)
<class 'float'>
数据转换
将浮点型数学(float)转换为整型(int)。
int()
>>> int(20.0)
20
>>> int(20.1)
20
>>> int(20.9)
20
将整型(int) 转换为浮点型(float)。
float()
>>> float(10)
10.0
除了 [int](https://docs.python.org/zh-cn/3/library/functions.html#int)
和 [float](https://docs.python.org/zh-cn/3/library/functions.html#float)
,Python也支持其他类型的数字,例如 [Decimal](https://docs.python.org/zh-cn/3/library/decimal.html#decimal.Decimal)
或者 [Fraction](https://docs.python.org/zh-cn/3/library/fractions.html#fractions.Fraction)
。Python 也内置对 复数 的支持,使用后缀 j
或者 J
就可以表示虚数部分(例如 3+5j
)。
字符串
Python 也可以操作字符串。字符串有多种形式,可以使用单引号('...'
),双引号("..."
)都可以获得同样的结果。
>>> 'spam eggs' # single quotes
'spam eggs'
>>> 'doesn\'t' # use \' to escape the single quote...
"doesn't"
>>> "doesn't" # ...or use double quotes instead
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
建议大家在定义字符串的时候。如果字符串中含有 '
, 字符串最外层使用 ""
>>> "doesn't" # ...or use double quotes instead
"doesn't"
+
字符串拼接
可以将两个字符串拼接在一起;
>>> 'a' + 'b'
'ab'
>>> 'test'+"1"
'test1'
>>> 'test'+"2"
'test2'
>>>
需要注意的是: 字符串不能与数字进行拼接
>>> 'test'+3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
*
运算
字符串 * 数字num, 字符串重复num次
>>> 'a'*10
'aaaaaaaaaa'
\t | tab 键的缩进 | |
---|---|---|
\n | 换行 |
小练习
>>> print('*'*40+'\n番茄炒蛋\t1\t¥15.00\n可口可乐\t1\t¥4.00\n'+'*'*40)
****************************************
番茄炒蛋 1 ¥15.00
可口可乐 1 ¥4.00
****************************************
字符串拼接
>>> line = "*"*30
>>> line
'******************************'
>>> print(line+"""
... 番茄炒蛋\t1\t¥15.00
... 可口可乐\t1\t¥4.00
... """+line)
******************************
番茄炒蛋 1 ¥15.00
可口可乐 1 ¥4.00
******************************
如果你不希望前置了 \
的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r
即可
>>> print('C:\some\name') # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name') # note the r before the quote
C:\some\name
字符串索引
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
字符串索引支持两个访问方式
从左往右 访问, 默认索引值从0开始,0表示第一个
>>> a = "Python"
>>> a
'Python'
>>> a[0]
'P'
>>> a[1]
'y'
>>> a[2]
't'
>>> a[4]
'o'
从右往左访问, 默认从-1开始,-1 表示最后一个字符;
>>> a = "Python"
>>> a
>>> a[-1]
'n'
>>> a[-2]
'o'
索引值一定在字符串的长度范围之内,如果超出长度,则会报IndexError
>>> a[100]
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
a[100]
IndexError: string index out of range
>>> a[-100]
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
a[-100]
IndexError: string index out of range
len 内置函数
返回序列结构数据的长度;
>>> len("helloworld")
10
字符串切片
表示从左往右取值 第一个参数表示开始位置(取值),第二个参数表示结束位置(不取值)
a[1:] 表示从第2值开始,一直取到结束;
a[:3] 表示从开始处取值,一直取到第3个值
a[2:4] 表示从第3个开始取值,一直取到第4个值
>>> b = "积分: 655"
>>> len(b)
7
>>> c = "a b c"
>>> len(c)
5
>>> b[0]
'积'
>>> b[1]
'分'
>>> b[4]
'6'
>>> b[5]
'5'
>>> b[6]
'5'
>>> b[4:6]
'65'
>>> b[4:]
'655'
>>> s = "abcdefg"
>>> s[1:2]
'b'
>>> s[1:]
'bcdefg'
>>> s[:5]
'abcde'
>>> s[-1:]
'g'
>>> s[-1:-3] #切片取值顺序是从左往右取值,-1 往后已经没有值了,取不到-3的位置,结果为‘’
''
>>> s[-3:]
'efg'
>>>
>>> a = "1234567"
>>> a[-3:]
'567'
>>> a[:3]
'123'
>>> len(a)
7
>>> a[len(a)//2-1:len(a)//2+2]
'345'
字符串步进
可以指定开始位置,结束位置和step
a[startIndex:endIndex:step]
- step, 如果step为负数,表示从后往前取值 <确定取值方向>
- startIndex, 开始位置(包含)
- endIndex, 结束位置 (不包含)
倒序结果>>> a = "1234567"
>>> a[::-1]
'7654321'
>>> a = "123456789"
>>> a[1:8:2]
'2468'
>>> a[1::2]
'2468'
>>> a[-2:-7:-2]
'864'
>>> a[-2::-2]
'8642'
列表
Python 中可以通过组合一些值得到多种 复合 数据类型。
列表和字符串一样,支持索引,切片,步长操作。>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
索引长度和字符串一样,同样不能超过长度。>>> students = ['zhangsan','lisi','wangwu','maliu']
>>> len(students)
4
>>> students[0]
'zhangsan'
>>> students[1]
'lisi'
>>> students[10]
Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
students[10]
IndexError: list index out of range
>>> students[-1]
>>> students[1:3]
['lisi', 'wangwu']
>>> students[::-1]
['maliu', 'wangwu', 'lisi', 'zhangsan']
使用+
拼接+
可以将list 拼接在一起>>> ['zhangsan','lisi','wangwu','maliu']+[1,2,3,4]
['zhangsan', 'lisi', 'wangwu', 'maliu', 1, 2, 3, 4]
使用*
重复次数*
更改list 中数据重复的次数;>>> students * 3
['zhangsan', 'lisi', 'wangwu', 'maliu', 'zhangsan', 'lisi', 'wangwu', 'maliu', 'zhangsan', 'lisi', 'wangwu', 'maliu']
>>>
list 操作
给切片赋值也是可以的,这样甚至可以改变列表大小,或者把列表整个清空:
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # replace some values
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # now remove them
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # clear the list by replacing all the elements with an empty list
>>> letters[:] = []
>>> letters
[]
多维list
>>> a = [[1,2,3],['a','b','c']]
>>> len(a)
2
>>> len(a[0])
3
>>> a[0][1]
2
>>> a[-1][-1]
'c'
字符串格式输出
>>> user = "xiaoming"
>>> age = 20
>>> className = "fanmao"
>>> print("my name is "+user+",my age is "+str(age)+",i am studying in "+className)
my name is xiaoming,my age is 20,i am studying in fanmao
format 格式化
{}
表示参数, format() 方法中传入的参数会自动传递到 {}
中
>>> 'my name is {}, my age is {}'.format('xiaoming',20)
'my name is xiaoming, my age is 20'
{}
中可以指定索引, 索引值不能越界。
>>> 'my name is {0}, my age is {1}'.format('xiaoming',20)
'my name is xiaoming, my age is 20'
>>> 'my name is {1}, my age is {1}'.format('xiaoming',20)
'my name is 20, my age is 20'
>>> 'my name is {0}, my age is {0}'.format('xiaoming',20)
'my name is xiaoming, my age is xiaoming'
>>> 'my name is {2}, my age is {2}'.format('xiaoming',20)
Traceback (most recent call last):
File "<pyshell#186>", line 1, in <module>
'my name is {2}, my age is {2}'.format('xiaoming',20)
IndexError: Replacement index 2 out of range for positional args tuple
{}
中也可以指定关键字,如果指定关键字,那么运行时需要传入关键字;
>>> 'my name is {name}, my age is {age}'.format(name='xiaoming',age=20)
'my name is xiaoming, my age is 20'
更多参考 https://docs.python.org/zh-cn/3/library/string.html#formatstrings
f 格式化字符串
这种语法是在Python 3.7 之后的版本中才有语法。
>>> name='xiaoming'
>>> age = 20
>>> f'my name is {name}'
'my name is xiaoming'
>>> f'my name is {name}, my age is {age}'
'my name is xiaoming, my age is 20'