文章目录
- 0.python小技巧与易错点
- 1.python 与 c 语法有哪些区别
- 2.Python基本语法
- 2.1python的变量类型
- 2.2python中的运算符
- 2.3python中的表达式
- 2.4python中的输入输出
- 3.python判断语句
- 3.1基本用法:
- 3.2关于else if 的用法
- 3.3关于pass语句
- 3.4python变量的作用域
- 3.5python条件表达式
- 3.6python三元运算
- 3.7python中match case语句
- 4.python循环语句
- 4.1while循环
- 4.2for循环
- 4.3python中跳转语句
- 4.4python循环中的else子句和pass语句
- 4.5多层循环嵌套
0.python小技巧与易错点
- python中交换两个数,可以这样写:
a, b = b, a
- 想要输出%时,要打两个%
- Python中的比较运算符支持链式操作,这一点跟C++和Java等语言不同。例如:
if a >= b >= c: ...
- python中是不支持 i++ 这种操作的,但是可以使用 i+= 1 这种操作
- python中这两种写法是完全不同的,例如,我们再求斐波那契数列时,会这么写:
x, y = y, x +y
这样写是没有错误的, 注意这里x 与y 是同时赋值的,即在第二个把x+y 赋给y 时,前面的y 还没有赋给x呢。 如果我们这样写的话就是错误的了,把他们分开写,写在两行
1.python 与 c 语法有哪些区别
- python定义变量时是不需要定义变量类型的,可以直接定义,例如:
weight = 10
且Python每个语句结束时是不需要使用分号来结束的,但是 必须要注意自己的格式,尽量写一行换一行 ,并且是支持逗号表达式的 - 取余c++采用向0取整,python是向下取整。 例如:-5 / 3 python中是 -2,而在c++中是-1
- 在强制类型转换中,写法不同;c++中是
float f = "3.14; int x = (int)f
而python中是s = '3.14' x = float(s)
- 在判断语句或分支语句中,python是不需要加括号,而是直接写,再加上一个冒号:,并且代码块时不要用大括号括起来的,python会根据缩进来判断
- python变量的作用域,语句内部的变量,可以在语句外访问(边执行边编译的)
2.Python基本语法
2.1python的变量类型
注意1:Python中的单引号与双引号是没有本质区别的,字符与字符串两个引号都可以使用
注意2:python中的int支持高精度,可以定义非常大的数据,而c++中的int大概可以定义到21亿左右
2.2python中的运算符
运算符 | 描述 |
---|---|
+ | 1.两个数相加,2.拼接两个字符串 |
— | 第一个数减去第二个数 |
* | 两个数相乘 |
/ | 第一个数除以第二个数,注意:除的结果是float类型 |
// | 整除,结果是int类型 |
% | 取模,注意:是向下取整 |
** | 乘方,例如:2 ** 3,表示的实际2的3次方 |
余下,例如: += -= *= /= //= **= %= |
注意:除法和取余运算时,当除以0时会出现异常错误,往下的程序不会执行
2.3python中的表达式
例如:
x = 2 + 3
y = (x + 1.0) * 5
print(x, y) #输出结果是5和30.0,这里就牵扯到类型转换了,整数与浮点数的运算,会把小的类型强制转化成大的类型
python中也有像c++那样强制类型类型转换,用法是一样的,但是写法不一样,例如:
s = "3.14"
x = float(s)
y = int(x)
print(s, x, y) #结果是 3.14 3.14 3
#同样也可以把整数转换成自字符串
str = "The value is " + str(y)
print(str)
杂:type(x) 可以查看x的类型是什么
2.4python中的输入输出
使用input()函数,可以输入一行内容,返回的类型为str。一般配合split()、map()、int()、float()等函数使用。
例如:
x, y = map(int, input().split()) #第一个参数int是将读入的类型转换成int类型,而split函数是将读入的字符串根据空格来划分出来
print(x, y) #读入3 4,则输出3 4
使用print()函数可以输出多个变量,默认用空格隔开,且行末会默认添加回车。如果想自定义行末字符,可以添加end参数。
==注意:print是自带换行的,若不想换行,后面再加个end=‘’,若想加个空格则加个end=’ ',想加什么都可以,例如:
a, b, c = 1, 2, 'abc'
print(a, b, c, end = '!') #这里是没有换行的,所以下面输出的a直接跟在感叹号的后面
print(a)
print(b)
print(c)
print的格式化输出
①:部分题目会要求保留若干位小数,此时可以使用round()函数。例如:
x = 3.1415926
print("x = " + str(round(x, 1))) #保留一位小数
print("x = " + str(round(x, 3))) #保留三位小数
②另外可以使用格式化字符串,例如:
x = 3.1415926
y = 9
print("x = %.1f" % x) #保留一位小数
print("x = %.3f" % x) #保留三位小数
print("x = %.2f, y = %d" % (x, y))
3.python判断语句
3.1基本用法:
x = int(input())
if x > 5: #每个分支语句后加冒号,且不需要写括号
print("%d is greater than 5" % x)
else:
print("%d is smaller than or equal 5" % x)
注意1:一定要注意不要忘写冒号,且判断的语句不用写括号,写了虽然不错,但是不规范
注意2:else 可以省略,即只有if语句
注意3:判断语句代码块不需要使用代码块括起来,python是根据首行缩进来确定分支语句的。
注意4:即使分子语句只有一行,也建议不要写在一行,不然不规范
3.2关于else if 的用法
①在else 语句里在套用 if else语句,例如:
age = int(input())
if age < 18:
print("未成年")
else:
if age < 60:
print("中年人")
else:
print("老年人")
②if else 连写,即 elif,例如:
x = int(input())
if x < 18:
print("未成年")
elif x < 60:
print("中年人")
else: #这个else是可以省略的
print("老年人")
3.3关于pass语句
pass 语句不执行任何动作。语法上需要一个语句,但程序毋需执行任何动作时,可以使用该语句。例如:
x = int(input())
if x > 5:
pass # 先空出来等以后再实现
else:
print(x)
3.4python变量的作用域
很特别。语句内部的变量,可以在语句外访问。 例如:
没有任何错误!
a, b = map(int, input().split())
if a > b:
max_value = a
else:
max_value = b
print(max_value)
3.5python条件表达式
与:and
或:or
非:not
注意:运算符优先级:not > and > or
例如:判断闰年条件:不能被100整除并且能被4整除或者能被100整除并且能被400整除(即能被400整除)
year = int(input())
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: #因为运算符优先级,所以我没有加括号
print("是闰年")
else:
print("是平年")
3.6python三元运算
类似于C++、Java中的问号表达式。例如:
a, b = map(int, input().split())
#求a,b中最大值
max_value = a if a > b else b
3.7python中match case语句
类似于C++中switch case语句,例如:
status = int(input())
match status:
case 400:
print("Bad request")
case 404:
print("Not found")
case 418 | 420 | 422:
print("I'm a teapot")
case _:
print("Something's wrong with the internet")
注意:
1.只有第一个匹配的模式会被执行。且跟C++、Java不同,匹配后只会执行当前模式,不会顺次执行后面的case。
2.可以用 | 表示匹配多个模式。
3.变量名 _ 被作为 通配符,(相当于c++中defalut语句) 并必定会匹配成功。
4.如果没有 case 匹配成功,则不会执行任何分支。
4.python循环语句
4.1while循环
例如:
i = 0;
while i < 10:
print(i, end=' ')
i += 1
注意:python中是不支持 i++ 这种操作的,但是可以使用 i+= 1 这种操作
练习1:求1~100中所有数的立方和。
i = 1
res = 0
while i <= 100:
res += (i ** 3)
i += 1
print(res)
练习2:求斐波那契数列的第n项。f(1) = 1, f(2) = 1, f(n) = f(n - 1) + f(n - 2)。
n = int(input())
a, b = 1, 1 #a,b分别表示第一项与第二项
i = 1
while i < n: #执行 n-1 次
a, b = b, a + b #分别往后挪一位
i += 1
print(a)
当我们要写个死循环的程序,即永真时,这么写即可:
while True:
...
4.2for循环
for循环语句用来按顺序枚举range、字符串等数据类型中的元素。
用法1:遍历一个字符串
for i in "python":
print(i, end=' ') #i也是字符串类型
print() #python中默认是最后要有个换行
用法2:遍历range
range()函数可以生成等差数列,可以接收1个、2个或者3个整数参数:
range用法:
1.接收1个整数参数时:range(x)会按顺序返回 0,1,2,3…x−1 这个数列。
2.接收2个整数参数时:range(x, y)会按顺序返回 x,x+1,x+2,…,y−1 这个数列。
3.接收3个整数参数时:range(x, y, z)分为两种情况:
①z > 0时,按顺序返回 x,x+z,x+2z,x+3z,… 这个数列中小于 y 的所有数。(正运算,单调上升)
②z < 0时,按顺序返回 x,x+z,x+2z,x+3z,… 这个数列中大于 y 的所有数。(逆运算,单调下降)
练习1:求 1∼1001∼100 中所有数的立方和。
s = 0
for i in range(1, 101):
s += i ** 3
print(s)
练习2:求斐波那契数列的第n项。f(1) = 1, f(2) = 1, f(n) = f(n - 1) + f(n - 2)。
n = int(input())
a, b = 1, 1
for i in range(n - 1):
a, b = b, a + b
print(a)
4.3python中跳转语句
与C++类似,同样有两种跳转语句,①break:提前结束循环,之后的循环都不会在执行。②continue:只会结束当前一轮循环continue后面的语句,下面的循环正常执行。
例题1:判断一个大于1的整数是否是质数。
x = int(input())
for i in range(2, x):
if x % i == 0:
print("Not a prime number")
break #后面的循环不会执行
else: #python中else可以与循环搭配使用,即上面的循环都不满足条件是,会执行else语句
print("Prime number")
例题2:求 1∼100 中所有偶数的和。
res = 0
for i in range(101):
if i % 2 == 0:
res += i
else:
continue #奇数项会跳过去
print(res)
4.4python循环中的else子句和pass语句
1.循环中的else语句:for或while循环可以包括else子句,会在循环结束后执行。不过如果循环是被break结束的,那么else子句就不会执行了。(continue不算)
2.循环中pass语句:类似于if语句,当for或者while循环里不想写任何代码时,可以写上pass语句,这个语句不执行任何动作。
4.5多层循环嵌套
while和for循环内的代码块中也可以包含循环语句。
例如:打印 1∼100 中的所有质数。
for i in range(1, 101):
for j in range(2, i):
if i % j == 0:
break
else:
print(i, end=' ')
#法二:
for i in range(1, 101):
is_prime = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i, end=' ')