Python 基础语法

  • 一行可以写多个语句,但每一条后面得打 ;
  • 一个语句可以写多行,但除了最后一行每一行后面得打 \。如果语句中有 [](){} 就不用。
  • python 没有大括号,只有缩进,空格数量随意,但是整个代码中的缩进空格数量必须严格相同。
  • 在 python 中 ' '" "''' ''' 基本一样,都可用作字符串标识,唯一的区别在于 ''' ''' 可以分多行写,且可以当作多行注释。
  • python 单行注释以 # 开头。

数据类型

数字

整型(int):整数。

浮点型(float):小数。

复数(complex):以 a+bj 的形式来表示,其中 a 为实部,b 为虚部,皆为 float。

字符串(str)

由数字、字母、下划线组成的一串字符。在 python 中,字符串是只读的。

下标方式有两种:

s= abcdefs0s1s2s3s4s5s6s5s4s3s2s1

为方便叙述,默认使用非负下标。

s[a:b:c] 截取 s 下标在 [a,b) 范围内的部分且截取步长为 c。若 a 为空,则从头开始取;若 b 为空,则取到末尾;若 c 为空,则挨个取。

a+b 表示把 ab 两个字符串连起来。

a*b 表示把 a 重复 b 遍。

跨行字符串需要用三引号括起来。

r'\n\t\v\f' 不处理转义字符,直接按照原始字符串处理。

转义字符:

  • \ 在行尾为续行符。
  • \\ \
  • \' '
  • \" "
  • \a 响铃,输出后电脑会响铃。
  • \b Backspace
  • \000 空字符
  • \n Enter
  • \v 竖向 Tab
  • \t 横向 Tab
  • \r 将光标移到行首。
  • \f 换页
  • \八进制数\x十六进制数 代表其对应的字符。
  • 其他的按照原字符处理。

列表(list)

[] 括起来的一堆有序元素,可以为数字、字符、字符串甚至是列表。内部对象类型可以不一致。

下标、切割、连接、重复同字符串。

元组(tuple)

() 括起来的一堆有序元素,除了只读以外和列表用法一样。

字典(dict)

{} 括起来的一堆无序元素,类似 C++ 中的 map,定义方式:

a={} a[x]=y a[y]=z

或是

a={x:y,y:z}

xyz 可以是任意不同类型,这样访问 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 返回 xyx//y 返回 xy

赋值运算符也和 C++ 一样,在算术运算符后面加个 = 就完事了,还有一个海象运算符 := 在表达式内部给变量赋值。

逻辑运算符就是 andornot

成员运算符即 innot in,判断元素是否在序列中。

身份运算符即 isis not,判断两个标识符是不是引用自同一对象。

优先级如下:

  1. **
  2. ~+-(注意这里是正负号)
  3. */%//
  4. +-(这里才是加减号)
  5. >><<
  6. &
  7. |^
  8. <=<>=>
  9. ==!=
  10. 赋值运算符
  11. 身份运算符
  12. 成员运算符
  13. 逻辑运算符

可添加括号打破优先级。

输入输出

输入

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);

breakcontinue 用法同 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 是不固定参数,会以元组的形式传入。如果是两个星号,就会以字典的形式传入。

λ 表达式是 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=i=1ni!

其中 1n50

这用 Python 岂不是简简单单、有手就行?

n=int(input()) fac=1 sum=0 for i in range(1,n+1): fac*=i sum+=fac print(sum)

__EOF__

本文作者ryanright
本文链接https://www.cnblogs.com/ryanright/p/15856532.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ryanright  阅读(1787)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示