文章目录
1.安装与配置
1.1 配置
-
python3的地址
终端输入:type -a python3
-
>>>
表示终端会话,退出方式ctrl+D或exit() -
文件名和文件夹名最好使用小写字母,并用下划线表示空格,这是Python的命名约定,如创建python_work文件夹
-
sublime中设置New Build System,然后删除所有内容,加入如下代码,按Cmd+B即可运行py文件
{ "cmd": ["/usr/local/bin/python3","-u","$file"], }
1.2 PyCharm
- 推荐用Pycharm,教育邮箱激活,免费试用一年,到期后再次认证即可
Jetbrains公司开发的IDE功能非常强大
2.基础知识
- python的语句不需要加
;
- 遍历慎用小写字母l和大写字母O,因为容易错看成数字1和0
- 段注释
"""
python段注释
"""
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
name = input("请输入姓名:") # 输入提示
print(name)
# 换行输出
# 字符串用引号表示,''或""都可以表示
# print()会依次打印每个字符串,遇到逗号,会输出一个空格
print("hello world!", 'I am here.')
# 变量
# ""和''可以结合起来使用
message1 = "Happy 'New' Year"
print(message1) # 输出:Happy 'New' Year
message2 = 'Happy "New" Year'
print(message2) # 输出:Happy "New" Year
Traceback是一条记录,之处解释器在尝试运行代码时,在什么地方遇到了困境
名称错误:1.变量名拼写错误 2.使用变量前忘记给它赋值
2.1 方法
方法是Python可对数据执行的操作
title | content |
---|---|
title() | 首字母大写 |
upper() | 全部字母大写 |
lower() | 全部字母小写 |
lstrip() | 删除左端空格 |
rstrip() | 删除右端空格 |
strip() | 删除两端空格 |
str() | 整数转为字符串 |
# 变量
name = "ada Love you"
print(name.title()) # Ada Love You
print(name.upper()) # ADA LOVE YOU
print(name.lower()) # ada love you
t = name.upper()
print(t) # ADA LOVE YOU
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
message = "Hello, " + full_name.title() + "!"
print(message) # Hello, Ada Lovelace!
在编程中,空白泛指任何非打印字符,如空格、制表符\t和换行符\n
message = " hello world! "
print(message.lstrip()) # 删除左端空格
print(message.rstrip()) # 删除右端空格
print(message.strip()) # 删除两端空格
age = 25
print("Happy " + str(age) + "th Birthday")
2.2 数据类型
python数据很自由,想开多大就多大
2.3 import this
Python之禅
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
…
2.4 python特殊点
Python2中print有些加括号,有些不加括号,而Python3中的print是一个函数,一次括号必不可少
Python2
3 / 2 = 1
3.0 / 2 = 1.5
Python3
3 / 2 = 1.5
3 // 2 = 1 # Python3特意用//来表示整数除法
因此Python2和Python3相互转换时,一定要注意这种异常细微
Python中用**
表示次幂运算
print(4 ** 3) # 输出64
3.列表
3.1 列表是有序集合
列表中可以放任何东西,其中的元素之间可以没有任何关系
给列表指定名字一般用复数,如:letters、digits、names
在Python中用方括号[]来表示列表,并用逗号分隔元素
访问最后一个列表元素可以用下标-1
bicycles = ["cannondale", '666', 23, "specialized", 'trek']
print(bicycles) # 输出 ['cannondale', '666', 23, 'specialized', 'trek']
print(bicycles[4].title()) # 输出 Trek
# 通过索引指定为-1,可以让Python返回最后一个列表元素
# 通过索引指定为-2,可以让Python返回倒数第二个列表元素
# 因此可以在不知道列表长度的情况下访问最后的元素
print(bicycles[-1]) # 输出trek
3.2 列表的增删改查
列表是动态的,可以快速进行增删改查
append(word)
insert(index,word)
# 在列表末尾添加元素
bicycles.append("wilson")
print(bicycles) # ['cannondale', '666', 23, 'specialized', 'trek', 'wilson']
# 在列表中插入元素
bicycles.insert(1, "here") # 在下标为1的位置插入"here"(变成第二个元素,其余元素后移)
print(bicycles) # ['cannondale', 'here', '666', 23, 'specialized', 'trek', 'wilson']
我们常需要从列表中删除元素,例如,玩家将空中的一个外星人射杀后,你需要将其从存活的外星人列表中删除
使用del删除元素
使用pop()删除元素
方法pop()可以删除列表末尾的元素,并让你能够接着使用它
arrays = ["Lebron", "Durant", "Kobe","Davis"]
del arrays[1] # 删除"Durant"
great = arrays.pop() # 删除"Davis",并把Davis赋给great
print(arrays) # ['Lebron', 'Kobe']
print(great) # Davis
使用pop(index)删除指定元素
players = ["Lebron", "Durant", "Kobe","Davis"]
players.pop(2) # 弹出索引为2的元素
print(players) # ['Lebron', 'Durant', 'Davis']
remove根据值删除元素
players = ["Lebron", "Durant", "Kobe","Davis"]
players.remove("Kobe") # 有时不知道列表中删除的值所处的位置,可用remove方法
sd = ["d"]
sd = players # 列表可以直接赋给另个列表
print(sd) # ['Lebron', 'Durant', 'Davis']
注意:remove只删除第一个指定的值
3.3 排序list.sort()和sorted(list)
sort()和sort(reverse=True) 永久性修改列表
pt = ["faith", "Computer", "79", "share"]
pt.sort() # 按字符从小到大排序
print(pt) # ['79', 'Computer', 'faith', 'share']
pt.sort(reverse=True) # 按字符从大到小排序
print(pt) # ['share', 'faith', 'Computer', '79']
sorted(list) 暂时性修改列表
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars)) # ['audi', 'bmw', 'subaru', 'toyota']
print(cars) # ['bmw', 'audi', 'toyota', 'subaru']
list.reverse() 反转列表
len(list) 确定列表的长度
用途:确定还有多少个外星人未被射杀,需要管理多少项可视化数据,网站有多少注册用户
注意:发生索引错误(下标越界)却找不到解决方法时,可以尝试将列表或其长度打印出来
4.操作列表
4.1 for循环
for循环要加冒号和注意缩进
使用单数和复数式名称,可以帮助判断代码段处理的是单个列表元素还是整个列表
for car in cats:
for item in list_of_items:
magicians = ['alice', 'david', 'carolina']
for magician in magicians: # 每个缩进的代码行都是for循环的一部分
print(magician.title() + 'Alice, that was great trick!')
print("I can't wait to see your next trick, " + magician.title() + ".\n")
4.2 避免缩进错误
Python根据缩进来判断代码行与前一个代码行的关系
对于for语句后面且属于循环组成部分的代码行,一定要缩进
如果你预期某项操作将针对每个列表元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行代码缩进
下面示例中print无效缩进,因为它不属于前一行代码
message = "Hello Python World"
print(message) # unexpected indent
为避免意外缩进错误,请只缩进需要缩进的代码
4.3 数字列表range(start, end, gap)
使用range()函数
range(start,end) # 左闭右开
range(end) = range(0,end) # 默认从0开始
range(start,end, gap)
for value in range(2, 7):
print(value) # 输出2-6
for va in range(3):
print(va) # 输出0-2
# 可以使用list()将range()的结果直接转换为列表
even_numbers = list(range(2, 11, 2))
print(even_numbers) # 输出[2, 4, 6, 8, 10]
创建一个列表,1-10的平方
squares = []
for value in range(1, 11):
square = value ** 2
squares.append(square)
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
对列表进行简单的统计计算
min(list)
max(list)
sum(list)
digits = [1, 2, 3, 4, 5]
print(max(digits)) # 5
print(min(digits)) # 1
print(sum(digits)) # 15
列表解析
列表解析是将for循环和创建新元素的代码合并成一行
# 列表解析
Ones = [val for val in range(5)]
print(Ones) # [0, 1, 2, 3, 4]
Threes = [value ** 3 for value in range(1, 11)]
print(Threes) # [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
4.4 切片list[start: end: gap]
players[start:end:gap]
左闭右开
players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
print(players[1:5]) # 输出下标1-2的元素
print(players[1:5:3]) # 输出下标1, 4的元素
print(players[:4]) # 输出下标0-3的元素
print(players[1:]) # 没有结束索引时,自动终止于列表末尾
# ['Irving', 'Love', 'JR', 'Thompson']
# ['Irving', 'Thompson']
# ['Lebron', 'Irving', 'Love', 'JR']
# ['Irving', 'Love', 'JR', 'Thompson']
输出最后三个元素
players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
print(players[-3:]) # 输出最后三个元素
遍历切片
players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
for player in players[1:4]: # 遍历下标为1-3的元素
print(player)
用途:排序后,获取某个玩家的三个最高得分;编写Web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息
4.4.1 直接用列表赋值
相当于C++引用,这两个变量都指向同一个列表
players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
stars = players
players.append('Durant')
stars.append('Curry')
print(players)
print(stars) # 输出结果相同
4.4.2 用切片[:]赋值列表
得到的两个不同的列表,相当于生成一个副本
players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
stars = players[:]
players.append('Durant')
stars.append('Curry')
print(players) # ['Lebron', 'Irving', 'Love', 'JR', 'Thompson', 'Durant']
print(stars) # ['Lebron', 'Irving', 'Love', 'JR', 'Thompson', 'Curry']
4.5 元组(不可变列表)
有时需要创建一系列不可修改的元素,元组(tuple)就可以满足这种需求
元组类似列表,但是使用圆括号
而不是方括号来标识
不能修改元组中的元素,但能修改元组变量
# 元组
dimensions = (10, 15, 13)
print(dimensions) # 输出 (10, 15, 13)
# dimensions[0] = 20 # 错误,不能修改元组中的元素
dimensions = (11, '2') # 修改元组变量是可以的
print(dimensions) # 输出 (11, '2')
4.6 代码规范
PEP8(Python Enhancement Proposal)代码格式设置指南
缩进
PEP8建议每级缩进用4个空格,tab键要设置制表符为4个空格
空行
空行不会影响代码的运行,但会影响代码的可读性。
建议不要在程序文件中过多地使用空行。
PyCharm可以自动格式化,包括处理多余空行
Python解释器根据水平缩进情况来解读代码,不关心垂直间距
行长
Python程序都建议每行不超过80字符,因为专业程序员都会在同一个屏幕上打开多个文件,使用标准行长可以让他们更好的阅读代码
大多数编辑器会设置一个视觉标志——通常是一个竖线
5.if语句
if, else类似for循环,后面都要加上:
5.1 and or 逻辑运算符
car = "BMW"
print(car == "bmw") # 输出 False
print(car.lower() == "bmw") # 输出 True
if car == "1":
print("Yes")
else:
print("No")
age_0 = 22
age_1 = 18
if age_0 > 21 and age_1 > 21:
print("Both > 21")
else:
print("Someone <= 21")
if (age_0 > 21) or (age_1 > 21): # 可以加括号增强可读性
print("Someone > 21")
else:
print("Both <= 21")
5.2 in 检查特定值是否在列表中
requested_toppings = ['mushrooms', 'onions', 'pineapple']
print('mushrooms' in requested_toppings) # 输出 True
同理用not in 检查特定值是否不在列表中
banned_users = ['andrew', 'carolina', 'david']
user = 'marie'
if user not in banned_users:
print(user.title() + ", you can post a response if you wish")
# 输出 Marie, you can post a response if you wish
用途:在地图程序中,可能需要检查用户提交的位置是否包含在已知位置列表中;结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中,而且通常会先把用户名转为全部小写后再去比较
5.3 if-elif-else结构
Python是if-elif-else结构 后面加:
C++是if-else if-else结构 后面加{}
digit = 12
if digit < 4:
print("Your admission cost is $0.")
elif digit < 18:
print("Your admission cost is $5.")
else:
print("Your admission cost is $10.")
else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,所以如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。这样可以肯定,仅当满足相应的条件时,你的代码才会执行
示例:
# 披萨店点披萨
# requested_toppings = []
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
if requested_toppings: # 列表非空时执行
for requested_topping in requested_toppings:
if requested_topping == 'green peppers':
print("Sorry, we are out of green peppers right now.")
else:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
输出
Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.
Finished making your pizza!
来源:CSDN
作者:Wilson790
链接:https://blog.csdn.net/qq_43827595/article/details/104012949