Python 基础语法
2022/1/30 12:04:22
本文主要是介绍Python 基础语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 一行可以写多个语句,但每一条后面得打
;
。 - 一个语句可以写多行,但除了最后一行每一行后面得打
\
。如果语句中有[]
、()
、{}
就不用。 - python 没有大括号,只有缩进,空格数量随意,但是整个代码中的缩进空格数量必须严格相同。
- 在 python 中
' '
、" "
、''' '''
基本一样,都可用作字符串标识,唯一的区别在于''' '''
可以分多行写,且可以当作多行注释。 - python 单行注释以
#
开头。
数据类型
数字
整型(int):整数。
浮点型(float):小数。
复数(complex):以 a+bj
的形式来表示,其中 \(a\) 为实部,\(b\) 为虚部,皆为 float。
字符串(str)
由数字、字母、下划线组成的一串字符。在 python 中,字符串是只读的。
下标方式有两种:
\[\begin{aligned}s=\ &\texttt a&\texttt b&&\texttt c&&\texttt d&&\texttt e&&\texttt f\\&s_0&s_1&&s_2&&s_3&&s_4&&s_5\\&s_{-6}&s_{-5}&&s_{-4}&&s_{-3}&&s_{-2}&&s_{-1}\end{aligned} \]为方便叙述,默认使用非负下标。
s[a:b:c]
截取 \(s\) 下标在 \([a,b)\) 范围内的部分且截取步长为 \(c\)。若 \(a\) 为空,则从头开始取;若 \(b\) 为空,则取到末尾;若 \(c\) 为空,则挨个取。
a+b
表示把 \(a\)、\(b\) 两个字符串连起来。
a*b
表示把 \(a\) 重复 \(b\) 遍。
跨行字符串需要用三引号括起来。
r'\n\t\v\f'
不处理转义字符,直接按照原始字符串处理。
转义字符:
\
在行尾为续行符。\\
\(\Rightarrow\)\
\'
\(\Rightarrow\)'
\"
\(\Rightarrow\)"
\a
\(\Rightarrow\) 响铃,输出后电脑会响铃。\b
\(\Rightarrow\) Backspace\000
\(\Rightarrow\) 空字符\n
\(\Rightarrow\) Enter\v
\(\Rightarrow\) 竖向 Tab\t
\(\Rightarrow\) 横向 Tab\r
将光标移到行首。\f
换页\八进制数
、\x十六进制数
代表其对应的字符。- 其他的按照原字符处理。
列表(list)
由 []
括起来的一堆有序元素,可以为数字、字符、字符串甚至是列表。内部对象类型可以不一致。
下标、切割、连接、重复同字符串。
元组(tuple)
由 ()
括起来的一堆有序元素,除了只读以外和列表用法一样。
字典(dict)
由 {}
括起来的一堆无序元素,类似 C++ 中的 map,定义方式:
a={} a[x]=y a[y]=z
或是
a={x:y,y:z}
\(x\)、\(y\)、\(z\) 可以是任意不同类型,这样访问 a[x]
返回的就是 y
,访问 a[y]
返回的就是 z
。
集合(set)
一堆无序元素,由 {}
括起来的 非空集 或 set()
定义的任意集。内部元素不可重。只读集合为 frozenset
。
基本操作:
- 差集:
a-b
; - 并集:
a|b
; - 交集:
a&b
; - 不同时存在的元素:
a^b
;
类型转换
一般格式:转换类型(转换对象)
一些特殊的:
int(x,base)
将 \(x\) 转换为 \(base\) 进制下的整数,\(base\) 默认为 \(10\),若不是 \(10\),则 \(x\) 需要以字符串的形式输入;complex(x[,y])
创建复数 \((x+yi)\)。repr(x)
将对象 \(x\) 转化为一个字符串。eval(x)
为repr(x)
的反函数,即将字符串 \(x\) 转化为一个对象。chr(x)
将整数 \(x\) 转为字符。ord(x)
将字符 \(x\) 转为整数。hex(x)
、oct(x)
将整数 \(x\) 分别转化为十六进制、八进制的字符串。
推导式
列表推导式
[表达式 for 变量 in 列表 if 条件]
后面的 if 条件
可有可无。
字典推导式
同上。
集合推导式
同上。
元组推导式
同上。
运算符
加减乘除模、比较运算符、位运算符和 C++ 都一样,x**y
返回 \(x^y\),x//y
返回 \(\lfloor\frac x y\rfloor\)。
赋值运算符也和 C++ 一样,在算术运算符后面加个 =
就完事了,还有一个海象运算符 :=
在表达式内部给变量赋值。
逻辑运算符就是 and
、or
、not
。
成员运算符即 in
和 not in
,判断元素是否在序列中。
身份运算符即 is
和 is not
,判断两个标识符是不是引用自同一对象。
优先级如下:
**
~
、+
、-
(注意这里是正负号)*
、/
、%
、//
+
、-
(这里才是加减号)>>
、<<
&
|
、^
<=
、<
、>=
、>
==
、!=
- 赋值运算符
- 身份运算符
- 成员运算符
- 逻辑运算符
可添加括号打破优先级。
输入输出
输入
a=input()
即可,但注意默认输入进来的会处理成字符串类型。
如果想要提示信息,就是:
a=input('Please input a:')
一口气输多几个就可以:
a,b,c=(input().split())
输出
print(x)
相当于
cout<<x<<endl;
print(x,y)
相当于
cout<<x<<' '<<y<<endl;
print(x,end=',')
相当于
cout<<x<<',';
str.rjust(x)
可将字符串按照 \(x\) 位右对齐,并在左边添加空格;str.ljust(x)
可将字符串按照 \(x\) 位左对齐,并在右边添加空格;str.center(x)
可将字符串按照 \(x\) 位居中,并在两边添加空格;str.zfill(x)
可将字符串按照 \(x\) 位右对齐,并在左边添 0
。
answer=0 print(f'The answer is {answer}')
的输出为 The answer is 0
。花括号内会计算表达式结果并替换到字符串的相应位置。
如果想保留三位小数点,可以这样:
import math print('{0:.3f}'.format(math.pi))
文件
f=open('in.txt',mode)
以 mode 模式打开 in.txt。其中,mode 的取值如下:
't'
文本模式,默认。'x'
写模式且新建一个文件。'b'
二进制模式打开。'+'
更新文件,可读可写。'r'
只读。'rb'
二进制格式只读。'r+'
读写。'rb+'
二进制格式读写。'w'
只写。'wb'
二进制格式只写。'w+'
读写。'wb+'
二进制格式读写。'a'
追加(只写)。'ab'
二进制格式追加(只写)。'a+'
追加(读写)。'ab+'
二进制格式追加(读写)。
其中,除了以 r 开头的,都会在找不到文件的情况下在当前目录创建对应的新文件进行读写。以 w 开头的打开文件时会清空文件,以 a 开头的打开文件时会保留文件原内容并将指针置于文件尾。
open 函数将返回一个文件对象。
freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);
相当于
open('in.txt'); open('out.txt','w');
假如我们把 open
函数返回的文件对象存储在 \(f\) 中,则 f.read(size)
将读取 \(size\) 数目的字符。如果 \(size\) 为空,则读取该文件中的所有数据。
f.readline()
读取文件中单独一行。
f.readlines()
读取文件中所有行。
f.write(str)
向文件中写入字符串 \(str\),并返回写入的字符数。
f.tell()
返回当前文件指针在文件中所处的位置,即文件的第几个字节。
f.seek(x,y)
移动当前文件指针的位置。
- \(y=0\),默认值,文件指针从头开始往后移动 \(x\) 个字节。
- \(y=1\),文件指针从当前位置开始往后移动 \(y\) 个字节。
- \(y=2\)。文件指针从尾开始往前移动 \(y\) 个字节。
f.close()
关闭文件。
语句
条件语句
if x>0: print('正数') elif x<0: print('负数') else: print('0')
相当于
if(x>0) puts("正数"); else if(x<0) puts("负数"); else puts("0");
循环语句
while i<=n: i+=1
相当于
while(i<=n) i++;
while i<=n: i+=1 else: print('i>n')
中,while
中的语句会正常执行,当循环正常退出(即非 break
强制退出)后会执行。for...else
同。
a=[1,2,3,4,5] for i in a print(i)
相当于
for(auto i:a) printf("%d\n",i);
for i in range(1,10,3) print(i)
相当于
for(int i=1;i<10;i+=3) printf("%d\n",i);
break
、continue
用法同 C++。
迭代器
同 C++,用于遍历容器。
iter(list)
用于创建一个 list
的迭代器。
可以用在 for
循环中遍历整个容器:
it=iter(list) for i in it print(i)
也可以使用 next()
函数:
import sys it=iter(list) while True: try: print(next(it)) except StopIteration: sys.exit()
函数
一个 C++ 的求斐波那契数列的函数:
int fib(int n) { if(n<3) return 1; else return fib(n-1)+fib(n-2); }
写成 Python 就是:
def fib(n): if n<3: return 1 else return fib(n-1)+fib(n-2)
不定长函数的写法:
def func(arg,*args)
前面数个 arg 是固定参数,args 是不固定参数,会以元组的形式传入。如果是两个星号,就会以字典的形式传入。
\(\lambda\) 表达式是 Python 一个重要的特点,
sum=lambda a,b:a+b
调用时直接像普通函数一样 sum(a,b)
调用就行了。
类
class node: x=0 y=0 def sum(self,x,y):# self 为必须的一个参数 return x+y def __sum(self,x,y):# 两个下划线开始的为私有方法 return x+y def __sum__(self,other):# 两边都是两个下划线为重载运算符 return node(self.x+other.x,self.y+other.y) def __init__(self,x,y):# 构造函数 self.x=x self.y=y class edge(node):# 继承 ...
说了这么多,还是拿个高精度的题来试试水吧。
P1009 【NOIP1998 普及组】 阶乘之和
计算
\[S=\sum_{i=1}^ni! \]其中 \(1\le n\le 50\)。
这用 Python 岂不是简简单单、有手就行?
n=int(input()) fac=1 sum=0 for i in range(1,n+1): fac*=i sum+=fac print(sum)
这篇关于Python 基础语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器