廖雪峰python教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624
安装
从Python的官方网站下载Python 3.8对应的64位安装程序或32位安装程序,然后,运行下载的exe安装包:
注意勾上Add Python 3.8 to PATH,然后点“Install Now”即可完成安装。
安装完成后打开cmd,输入python,得到
说明安装成功
输入&输出
1、输出
print(123)
#输出字符串时单引号双引号都可以
print('hello, world')
#拼接字符串 用逗号“,”隔开,就可以连成一串输出
print('hello', 'are','you','ok')
# 输出 hello are you ok
2、输入
>>> name=input()
mike
>>> name
'mike'
input()可以让你显示一个字符串来提示用户,例如name = input('please enter your name: ')
。用户就可以根据提示,输入名字。
基础
以#开头的语句是注释,可以是任意内容,解释器会忽略掉注释。
当语句以冒号:结尾时,缩进的语句视为代码块。
按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。
Python程序是大小写敏感的,如果写错了大小写,程序会报错
数据类型
整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,等等。
十六进制用0x前缀和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
等等。
Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。
浮点数
但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
字符串
字符串是以单引号’或双引号"括起来的任意文本,如果字符串内部既包含’又包含" 则可以用转义字符\来标识
'I\'m \"OK\"!'
# 输出I'm "OK"!
如果不想字符串内的字符被当成转义字符来标识,可以在字符串前加个r
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’'的格式表示多行内容
print('''
line1
line2
line3
''')
输出:
line1
line2
line3
布尔值
布尔值可以用and、or和not运算,分别对应与运算,或运算和非运算。
编码
Python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
# 还可以用十六进制这么写
>>> '\u4e2d\u6587'
'中文'
要计算str包含多少个字符,可以用len()函数
>>> len(b'ABC')
3
%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
列表list与元组tuple
list操作
# 生成队列
classmates = ['Michael', 'Bob', 'Tracy']
# 访问元素
classmates[0]
# 添加元素
classmates.append('ada')
# 元素插入指定位置
>>> classmates
['mike', 'lily', 'ada']
>>> classmates.insert(1,'jack')
>>> classmates
['mike', 'jack', 'lily', 'ada']
# 删除末尾元素
>>> classmates.pop()
'ada'
# 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置
>>> classmates[1] = 'Sarah'
>>> classmates
['mike', 'Sarah', 'lily']
# 嵌套list
>>> p = ['a','b','c']
>>> classmates.append(p)
>>> classmates
['mike', 'Sarah', 'lily', ['a', 'b', 'c']]
元组tuple
tuple一旦初始化就不能修改
# 多数据
t = (1,3,5)
# 单数据
t = (1,)
# 空数据
t = ()
循环
1 for…in 循环
for n in range(101):
print(n," ")
t = ('a','b','c')
print(t)
for name in t:
print(name)
2 while 循环
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
字典dict和set
dict
# key-value值
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# 通过key读value
print(d['Michael'])
# 输出 95
# 获得所有key
print(d.keys())
# 输出 dict_keys(['Michael', 'Bob', 'Tracy'])
# 获得所有元素
print(d.items())
# 输出 dict_items([('Michael', 95), ('Bob', 75), ('Tracy', 85)])
# 获得所有value
print(d.values())
# 输出 dict_values([95, 75, 85])
# 通过key读value
print(d.get('Michael'))
# 输出 95
# 删除某个key
print(d.pop('Michael'))
一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
s = set([1, 2, 3, 1, 4, 2, 3])
print(s)
# 输出 {1, 2, 3, 4}
s.add(4)
s.remove(4)
函数
定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
我们以自定义一个求绝对值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
空函数
def nop():
pass
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
高级特性
切片
切片即节选数据。
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
# 顺序
>>> L[:3]
['Michael', 'Sarah', 'Tracy']
>>> L[1:3]
['Sarah', 'Tracy']
# 倒数 -1表示倒数第一个
>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']
迭代
迭代即循环
使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。
判断对象能否迭代
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False