【Python】python基本语法和使用

介绍:

Python 是开发效率高、生态强大但性能偏弱的一种编程语言,适合快速开发和上层应用;而C++ 是性能极强、控制能力强但开发成本高的系统级语言,适合底层和高性能场景;两者不是对立的,而是互补的,很多大型项目都是用 C++ 做核心,Python 做上层封装,兼顾效率和性能。

1,标准输入输出

1,标准输入

python 使用 input 函数,从控制台读取用户的输入。类似 C++ 中的scanf。

input 从控制台或终端等待你输入一行内容,按回车结束,它读到的内容一律是字符串类型。它返回值就是用户输入的内容,是字符串类型,想当数字用必须强转。

# 基本用法

s = input()

# 带提示文字

name = input("请输入名字:") # 输入12,name的数据是控制台上的输入
print("你好", name) # 输出:你好 12

age = int(input("请输入年龄:")) # 类型强转int
score = float(input("请输入分数:")) # 类型强转float

a = input('请输入第一个整数: ')
a = int(a)

2,标准输出

print(1 + 2 - 3) # 输出0
print(1 + 2 * 3) # 输出7
print(1 + 2 / 3) # 输出1.6666666666666665

num = 10

print(f'num = {num}') # 输出num = 10

print('num = {num}') # 输出num = {num}

name = input("请输入名字:") # 输入12
print("你好", name) # 输出你好 12

name = 'python'

print("你好" + name) # 输出你好python

print("你好" + num) # 输出错误,+ 两边类型不一样

print 是一个 Python 内置的标准输出函数,函数内,可以使用 + - * / ( ) 等运算符进行算术运算。先算乘除,后算加减。运算符和数字之间,可以没有空格,也可以有多个空格。

使用 f 作为前缀的字符串,称为 f-string,里面可以使用 { } 来内嵌一个其他的变量或表达式。

print("你好", name)这里的逗号表示这是两个独立的参数,即"你好"和"name"是两个独立参数。Python 规定,多个参数输出时,自动加一个空格分隔,因此输出时两参数中间有一个空格。

print("你好" + name)里面 "+" 两边的类型必须一致,不一致会报错。

注意:C/C++中,2 / 3 结果为 0 (小数部分被截断),而 // 运算符才会进行取整运算。但是在 Python 中得到的结果则是一个小数。其次,Python中,单行注释符号是'#',多行注释符号是 """ 或者 '''。

2,变量和类型

Python和C++等语言不同,Python变量的类型不需要显式指定,而是在赋值的时候确定的,类型是自动推断的。

a = 10

a = 15
b = 20
a = b
print(a)
print(b)

print(a ** 2) # 输出400

Python里,变量 ** 2 就是求这个变量的 2 次方。** 是 Python 的幂运算符,例如,x ** 3 就是立方,x ** 0.5 就是开平方。

1,整形int

a = 10

print(type(a)) # 输出<class 'int'>

注意:Python 和 C++ 等语言不同,Python 的 int 类型变量,表示的数据范围是没有上限的。只要内存足够大,理论上就可以表示无限大小的数据。

2,浮点数float

a = 0.5

print(type(a)) # 输出<class 'float'>

注意:Python 和 C++ 等语言不同,Python 的小数只有 float 一种类型,没有 double 类型,但是实际上 Python 的 float 就相当于 C++ 的 double,表示双精度浮点数。

3,字符串str

a = 'hello'

print(len(a)) # 输出5

b = 'world'

print(a + b) # 输出helloworld

print(type(a)) # 输出<class 'str'>

使用 ' ' 或者 " " 引起来的,称为字符串。在 Python 中,单引号构成的字符串和双引号构成的字符串没有区别,例如,'hello' 和 "hello" 是完全等价的。这里可以使用 len 函数来获取字符串的长度,还可以使用 + 针对两个字符串进行拼接。字符串作为开发中最常用到的数据类型,支持的操作方式也是非常丰富的,用到时根据其他语言经验进行理解即可,这里不再一一说明。

4,布尔型bool

布尔类型是一个特殊的类型,取值只有两种,True (真) 和 False (假)。

a = True
print(type(a)) # 输出<class 'bool'>
b = False
print(type(b)) # 输出<class 'bool'>

a = 10
b = 20
c = 30
print(a < b and b < c)****# 输出True

print(a < b and b > c)****# 输出False

print(a > b or b > c)****# 输出False

print(a < b or b > c)****# 输出True

print(not a < b)****# 输出False

print(not a > b)****# 输出True

and or not 这一系列的运算符称为逻辑运算符。and 类似 C/C++ 中的 "&&",or 类似 C/C++ 中的 "||",not 类似 C/C++ 中的 "!"。

5,列表list和元组

1,列表

list是 Python 中的可变序列类型。里面元素按放入顺序排列,有下标(索引),且可以增、删、查、改元素,允许出现相同值和任意类型混放。

a = 1,2,3

print(type(a)) # 输出<class 'list'>

b = 1, 2, 3, "hello", \[4, 5, True]

# 增添元素

b.append(40) # 末尾添加
b.insert(0, 5) # 指定位置插入(索引下标0,第一个元素)

print(b) # 输出5, 1, 2, 3, 'hello', \[4, 5, True, 40]

# 删除元素

b.pop() # 删除最后一个
b.pop(0) # 删除指定下标
b.remove(20) # 删除第一个值为20的元素
del b1 # 直接删除
b.clear() # 清空

# 查找元素

print(b0) # 输出1

print(b-1) # 输出True(倒数第一个)

print(b-2) # 输出4, 5(倒数第二个,后面类似)

# 修改元素

b1 = 999

len(b) # 获取长度
alist = 1, 2, 3, 4
print(alist1:3) # 输出2, 3

alist = 1, 2, 3, 4
print(alist1:) # 省略后边界, 表示获取到列表末尾
print(alist:-1) # 省略前边界, 表示从列表开头获取
print(alist:) # 省略两个边界, 表示获取到整个列表

# 指定步长,也就是每访问一个元素后,下标自增几步

alist = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
print(alist::1)
print(alist::2)
print(alist::3)
print(alist::5)

# 指定的步长还可以是负数,此时是从后往前进行取元素

alist = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
print(alist::-1)
print(alist::-2)
print(alist::-3)
print(alist::-5)

# 如果填写的数字越界了,不会有负面效果,只会尽可能的把满足条件的元素过去到

alist = 1, 2, 3, 4

print(alist3:200) # 输出 4

2,元组

元组的功能和列表相比基本是一致的, 不同的是元组使用 "()" 来表示。其次,元组不能修改里面的元素,列表则可以修改里面的元素,操作与列表基本都是一样的。

6,dict字典类型

dict 是键值对映射,用来存 "名字 - 内容" 这种对应关系的数据,是 Python 里最常用的映射类型。该类型等同于 C++ 的 std::map/std::unordered_map。

# 基本语法
d = {} # 空字典

b = dict()

person = {
"name": "张三",
"age": 20,
"height": 175.5
} # 有数据的字典

# 取值

print(person"name") # 张三
print(person.get("age")) # 20

# 修改或添加

person"age" = 21 # 修改
person"gender" = "男" # 新增

# 查找。使用 in 可以判定 key 是否在字典中存在,返回布尔值

print('id' in person) # 输出False

print('name' in person) # 输出True

# 删除

del person"height"
person.pop("age")
person.clear() # 清空

# 遍历
for k in person:
print(k)
for key in student:
print(key, studentkey)

7,动态类型

Python中,一个变量是什么类型,是可以在程序运行过程中发生变化的。这个特性称为动态类型。变量不用声明类型,赋值什么类型,它就是什么类型,运行时可以随便改。

a = 10 # 现在是 int

a = "hello" # 现在变成 str

a = 1,2,3 # 又变成 list

特点:

  • 不用提前写类型。
  • 同一个变量,运行时可以变类型。
  • 类型是跟值绑定,不是跟变量名绑定。

Python 3.5+ 支持类型注解,只是给人看、给编辑器提示,不影响运行。

age: int = 18
name: str = "张三"
height: float = 1.75
is_student: bool = True

nums: listint = 1,2,3
user: dictstr, str = {"name": "Tom", "sex": "male"}

3,条件语句

Python 的条件语句就是 if/elif/else,和 C++ 逻辑一样,但写法更简单。

if 条件1:
代码块
elif 条件2:
代码块
else:
代码块

条件后面必须加冒号 ":",代码块用缩进表示(跟C++不一样,不用大括号),缩进一般是4个空格。

score = 85

if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")

条件语句中有一个空语句pass,不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。

a = int(input("请输入一个整数:"))
if a != 1:
pass
else:
print("hello")

# 上面逻辑与下面等价
a = int(input("请输入一个整数:"))
if a == 1:
print("hello")

4,循环语句

1,while 循环

while 条件:
循环体代码

i = 1
while i <= 5:
print(i)

if i == 5:

break
i = i + 1

2,for 循环

Python 的 for 主要用来遍历东西,比如列表、字符串。

for 循环变量 in 可迭代对象:
循环体

nums = 10, 20, 30
for n in nums:
print(n)

s = "hello"
for c in s:
print(c)

# 打印1-10

for i in range(1, 11):

if i == 3:

continue

print(i)

5,函数

Python 函数用 def 定义,和 C++ 的函数思路一样,但写法更简单。

def 函数名(参数):
函数体
return 返回值

函数用 def 关键字,括号里是参数(可以没有),后面必须加冒号 ":",函数内代码用缩进,return 用来返回结果(可以没有)。

# 定义求和函数
def calcSum(beg, end):
sum = 0
for i in range(beg, end + 1):
sum += i
print(sum)

在不同的作用域中,允许存在同名的变量。Python 的作用域跟 C/C++ 不同,需要使用 "{}" 说明作用域,Python 依靠缩进表明作用域,这块根据 C/C++ 作用域理解运用即可。如果是想在函数内部修改全局变量的值,需要使用 global 关键字声明。

x = 20 # 全局作用域
def test():
x = 10 # 函数内部作用域
print(f'函数内部 x = {x}') # x = 10

test()
print(f'函数外部 x = {x}') # x = 20

x = 20
def test():
global x
x = 10
print(f'函数内部 x = {x}') # 函数内部 x = 10
test()
print(f'函数外部 x = {x}') # 函数外部 x = 10

一个函数是可以一次返回多个返回值的。使用 "," 来分割多个返回值。如果只想关注其中的部分返回值,可以使用 "_" 来忽略不想要的返回值。

def getPoint():
x = 10
y = 20
return x, y
a, b = getPoint() # a = 10, b = 20

def getPoint():
x = 10
y = 20
return x, y
_, b = getPoint() # b = 20

Python 中的函数,可以给形参指定默认值。这块跟 C++ 用法类似,不再具体说明。

def add(x, y, debug=False):
if debug:
print(f'调试信息: x={x}, y={y}')
return x + y

print(add(10, 20))
print(add(10, 20, True))

字段参数这块,Python 还可以通过关键字参数来调整这里的传参顺序,显式指定当前实参传递给哪个形参。

def test(x, y):

print(f'x = {x}')

print(f'y = {y}')

test(x=10, y=20)

test(y=100, x=200)

最后要说的是,编程语言中,很多语法都是相同的,掌握一门语言后,在学习其他语言后,很多知识都是互通类似的。

6,文件

open 打开文件。close 关闭已经打开的文件。write 方法写入文件。read 读取文件,readline 可以读取一行,readlines读取整个文件内容。这块接口跟 C 中的接口类似。

# 读取文件

f = open('d:/test.txt', 'r', encoding='utf8') # 使用utf8编码方式
result = f.read(2) # 读取两个字符
print(result)
f.close()

f = open('d:/test.txt', 'r')
lines = f.readline() # 读取一行。文件每行都自带换行符
print(lines)
f.close()

f = open('d:/test.txt', 'r')
for line in f:
print(f'line = {line}') # 一次读取一行
f.close()

f = open('d:/test.txt', 'r')
lines = f.readlines() # 直接把文件整个内容读取出来,包括每行末尾的换行符
print(lines)
f.close()

# 写入文件

f = open('d:/test.txt', 'w')
f.write('hello')
f.close()

相关推荐
SilentSamsara1 小时前
向量数据库实战:Chroma/Milvus/Qdrant 选型与语义搜索应用
开发语言·数据库·人工智能·python·青少年编程·milvus
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第115题】【并发篇】第15题:说一下悲观锁和乐观锁的区别?
java·开发语言·面试
lijgvnns1 小时前
个人AI编程工具的vibe coding实践:从爬虫到导出Excel的全流程
开发语言·javascript·ecmascript
沪漂阿龙2 小时前
Embedding:文本怎么变成向量?语义检索为什么能工作?
人工智能·python·embedding
青春喂了后端2 小时前
Go Sidecar Status 性能优化
开发语言·性能优化·golang
摇滚侠2 小时前
MyBatis 入门到项目实战 MyBatis 分页插件 65-66
java·开发语言·sql·mybatis
生信碱移2 小时前
Vscode 连接 ipynb 选择内核无法自动显示 conda 环境对应的 python
服务器·人工智能·经验分享·vscode·python
CHHH_HHH2 小时前
【C++】哈希表原理与实战:从冲突解决到性能优化
开发语言·数据结构·c++·学习·算法·哈希算法·散列表
Cloud_Shy6182 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 48 - 50)
开发语言·人工智能·笔记·python·microsoft·学习方法