在macOS上安装Python
如果你正在使用Mac,那么系统自带的Python版本是2.x。要安装最新的Python 3.x,有两个方法:
方法一:从Python官网下载Python 3 macOS版的安装程序,下载后双击运行并安装;
方法二:如果安装了包管理器Homebrew,直接通过命令brew install python3安装即可。Homebrew 不会在全局把 python、pip 直接指到 3.14,避免和系统或其它 Python 冲突。若需要「无版本号」的 python / pip,它们在:/opt/homebrew/opt/python@3.14/libexec/bin,若要用它们,可把该目录加到 PATH 前面,例如(zsh):export PATH="/opt/homebrew/opt/python@3.14/libexec/bin:$PATH",然后重新打开命令行窗口输入python --version,即可看到最新的Python版本
输出
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出hello, world,用代码实现如下:
print('hello, world')
# print函数也可以接受多个字符串
print("Hello, World!", "Hello, Python!", "Hello, World!")
# 可以接受更多的参数,诸如sep多个参数之间的分隔符。
print('The quick brown fox', 'jumps over', 'the lazy dog', sep="\n")输入
如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
name = input("请输入姓名:")
print("你输入的姓名是:" + name)注释
注意:虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。
# 这是单行注释
a = 100
'''
这里是多行注释
由前面的三个单/双引号和后面的三个单/双引号包裹
'''在 Python 中,多行注释是由三个单引号 ''' 或三个双引号 """ 来定义的,而且这种注释方式并不能嵌套使用。当你开始一个多行注释块时,Python 会一直将后续的行都当作注释,直到遇到另一组三个单引号或三个双引号。
'''
这是外部的多行注释
可以包含一些描述性的内容
'''
这是尝试嵌套的多行注释
会导致语法错误
'''
'''在这个例子中,内部的三个单引号并没有被正确识别为多行注释的结束,而是被解释为普通的字符串。
这将导致代码结构不正确,最终可能导致语法错误。
如果你需要在注释中包含嵌套结构,推荐使用单行注释(以#开头)而不是多行注释。
单行注释可以嵌套在多行注释中,而且不会引起语法错误。例如:
'''
这是外部的多行注释
可以包含一些描述性的内容
# 这是内部的单行注释
# 可以嵌套在多行注释中
'''数据类型
布尔值
在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:
a = True and True # true
b = True and False # false
c = False and False # falseor运算是或运算,只要其中有一个为True,or运算结果就是True:
a = True or True # true
b = True or False # true
c = False or False # falsenot运算是非运算,它是一个单目运算符,把True变成False,False变成True:
a = not True # false
b = not False # true
c = not 1 > 2 # true空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
a = None
print(a) # None
print(a is None) # TruePython的内置关键字
一共35个
and、or、not
1. and、or、not (逻辑运算符)
a = 5 > 3 and 1 < 2
b = 5 > 3 or 1 > 2
c = not (5 < 3)
print(a, b, c)if、elif、else
# 2.if、elif、else(条件语句)
age = int(input("请输入您的年龄:"))
if age < 18:
print(f"您的岁数是{age},是一个未成年人")
elif age < 40:
print(f"您的岁数是{age},是一个青年人")
else:
print(f"您的岁数是{age},是一个中老年人")for、while
languages = ["python", "java", "ruby"]
for i in languages:
print(i,end="|")True、False
continue、break
pass
try、except、finally、raise
import、from、as
def、return
class
lambda
del
global、nonlocal
in、is
# in、is(判断语句)
print("h" in "hello")
print(2 not in [1, 2, 3])
l1 = [1, 2, 3]
l2 = l1.copy()
l3 = l1
print(l1 is l2)
print(l1 is l3)None
assert
with
yield
async、await
type
a = 1
b = 3.14
c = True
d = None
e = "Hello, World!"
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))输出结果如下:
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>
<class 'str'>Python的module模块
方式一import 模块名
这个相当于整体导入
import random
a = random.randint(1, 100)
print(a)方式二from...import ...
from 模块名 import 函数名称或变量名称(多个函数名使用逗号分割)
这个相当于按需导入
from random import randint, random, randbytes
a = randint(1, 2)
b = random()
c = randbytes(10)
print(a)
print(b)
print(c)循环结构
for循环
for 临时变量 in 数据容器:
循环满足条件时执行的代码
list = [1, 2, 3, 4, 5]
for i in list:
print(i)range函数的使用
range()函数用于生成一个整数序列,其基本语法为range(start, stop[, step]),其中start是起始值,默认为0;stop是终止值,但注意这个终止值是不包含在生成的序列中的;step是步长,默认为1。range() 函数可创建一个整数列表,一般用在 for 循环中。
for i in range(0, 10):
print(i)
# 输出0,1,2,3,4,5,6,7,8,9break关键字
结束剩下的所有的循环。
for i in range(1, 10):
if i == 5:
print('跳出当前的循环')
break
print('这是第{}次循环'.format(i))continue关键字
跳过当前的这一次不符合条件的循环,整体不结束。
for i in range(1, 10):
if i == 5:
print('跳过当前的循环')
continue
print('这是第{}次循环'.format(i))List列表
序列是 Python 中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。Python 有 6 个序列的内置类型,但最常见的是列表和元组。列表中的成员可以是任何类型。 bnn
users= ['admin', 'user1', 'user2', 'user3', 'user4', 'user5']
for user in users:
if user == 'admin':
print('管理员用户'+user)
continue
print('普通用户'+user)
print(users[0])
users[1] = 'user6'
print(users)
print(type(users))List包含的函数如下:
- len(list):列表元素个数
- max(list):返回列表元素最大值
- min(list):返回列表元素最小值
- list(seq):将元组转换为列表
List包含的方法如下:
list.append(obj):在列表的末尾增加新的对象
list.count(obj):统计某个元素在列表中出现的次数
list.extend(seq):在列表末尾一次性追加了一个序列中的多个值,用新列表来扩展原来的列表
list.index(obj):从列表中找出某个值第一个匹配项的索引位置
list.insert(index,obj):将对象插入列表
list.pop(index=-1):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj):移除列表中某个值的第一个匹配项
list.sort(key=None, reverse=Flase):对原列表进行排序
list.reverse():反转列表中元素
list.clear():清空列表
list.copy():复制列表
Tuple元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 (),列表使用方括号 []。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用。元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d" # 不需要括号也可以
print(tup1)
print(tup2)
print(tup3)
tup3 = tup1 + tup2
print(tup3)
# 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
tup4 = (50)
print(type(tup4)) # 不加逗号,类型为整型
tup5 = (50,)
print(type(tup5)) # 加逗号,类型为元组
print(tup5)访问元组
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0]) # 输出元组第一个元素
print ("tup2[1:5]: ", tup2[1:5]) # 输出元组第二个元素到第五个元素修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
tup1[0] = 'Baidu' # 以下修改元组元素操作是非法的,会报错,元组不能修改
print(tup1)
tup3 = tup1 + tup2 # 创建一个新的元组
print(tup3)删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
删除后的元组 tup :
Traceback (most recent call last):
File "test.py", line 8, in <module>
print (tup)
NameError: name 'tup' is not defined函数
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
# 案例如下:定义函数的时候参数列表如果有,则调用的时候必须要传递
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))变量的作用域
局部变量:定义在函数内部的变量,只能在函数中使用,函数使用完成则会被释放。
全局变量:到处都可以使用。
如果局部变量和全局变量同名的话,局部变量的值会覆盖全局变量的值。
g_number1 = 100
def change_number():
g_number1 = 200
print('这里是局部变量g_number1的值',g_number1)
print('这里是全局变量g_number1的值',g_number1)
change_number()
print('这里是全局变量g_number1的值',g_number1)
# 输出的结果如下:
# 这里是全局变量g_number1的值 100
# 这里是局部变量g_number1的值 200
# 这里是全局变量g_number1的值 100如何在函数内部修改全局变量的值
g_number1 = 100
def change_number():
# 加上global关键字
global g_number1
g_number1 = 200
print('这里是局部变量g_number1的值',g_number1)
print('这里是全局变量g_number1的值',g_number1)
change_number()
print('这里是全局变量g_number1的值',g_number1)
# 输出的结果如下:
# 这里是全局变量g_number1的值 100
# 这里是局部变量g_number1的值 200
# 这里是全局变量g_number1的值 200