python刚刚开始入门,总结一下上网课时学到的python基本语法。
有一点c的基础,主要总结和c不太一样的地方。
持续更新
sidenotes
- 不需要semicolon ;
- indentation缩进代替{ }
- 变量不需要declare type,可以直接赋值。
- 不需要格式符号%d,%lf
- “” 或者’ '都可以用来标注字符串
- 每次print执行完了之后,都会默认换行。可以更改这一设定:
print("hello world", end='')
#end=规定每次打印结束以什么来结尾
- 一个print函数打印多个字符串
print(a, b, c)
#默认字符串用空格隔开
print("hello" * 3)
#打印“”里面的内容3次
--------------------
hellohellohello
print("hello" + "world")
----------------
helloworld
打印特殊符号
转义符号
当要打印字符串里面的 ’ 或者" 时,\n, \t, 或者位于句末的\时
print("lower\\")
---------------------
lower\
加上r
(只适用于\n, \t等,并且不包括位于句末的\)
string = r'\n\t'
print(string)
---------------------
\n\t
打印多行的字符串
使用三个“ 或者 ‘
print('''hello
world''')
#打印结果会自动换行
---------------------
hello
world
if else
不要忘记冒号和indentation
if a == 1:
print(' a == 1')
elif a == 2:
print(' a == 2')
else:
pass
while
不支持do while
a = 1
while a < 2:
print(a)
a += 1
#⚠️python不支持++,--
for
主要适用于list或者tuple
⚠️这里的i和j不是一个counter,而是这个list里面的一个元素element
for i in list1:
for j in i:
print(j)
运算符
逻辑运算符
&& and
|| or
! not
算数运算符
/ 为数学意义上的除法,整数之间相除可以得到小数
// 为floor除法,即使operands是小数,结果依然为小数(floor为整数)
** 幂
- 比左侧的单目运算符高,比右侧的低
-3 ** 2 == -9
3 ** -2 == 0.11111
比较符
支持 3<4<5,相当于 3<4 and 4<5
三元操作符
string = a if a < b else b
if a < b:
string = a
else:
string = b
数据类型
区分int & float
有无小数点
科学记数法
默认为float
a = 1e-12
序列 sequence
commonalities
- slice
- 重复操作(*),拼接(+),关系(in not in)
- 其他操作:
- 判断序列里,是否含有另外一个序列
- 查找某一个element或者sequence,返回其index
- 查找index中存储的element
- 查找最大/小值 (前提:所有elements为同一个类型)
- 查找某个element出现的次数
- index支持负数,意为倒数 (e.g. -1意思是倒数第一)
列表list
- 空列表:[]
- 可以更改element,添加,删除
list1 = [1, 'hello', 2.0]
#可以存放不同类型的元素
添加element
list1.append(3)
#追加一个element,一次只能添加一个
list1.extend([0, 2.4])
#输入的list会与当前的list合成一个list
#或者
list2 = list1 + list2
list1.insert(0, 'hello')
#第一个参数为index,第二个是element
#将一个element放到指定的index
删除element
list1.remove(0)
#删除输入的element
del list1[2]
del list1
#删除某一个element或者整个list
list1.pop(3)
#删除在这个index的element,并返回这个element
#默认为最后一个element
slice
list1[1:3]
#截取从index1到3(不包含3)的elements
#第一个参数默认为0,第二个为最后的index
list2 = list1[:]
#copy整个list, 更改list1并不会影响list2, vice versa
list2 = list1[1:9:2]
#step为2
比较大小
list1 == list2
#只有当所有element相同时为true
list1 < list2
#比较第一个不相同的element
检查是否存有一个element
if 'hello' in list2:
print('yes')
if 'hello' not in lsit2:
print('no')
某个element出现次数
list2.count('hello')
某个element第一次出现index
list2.index('hello', 3, 7)
#返回这个element在[3, 7)内第一次出现的index
#如果没有出现,会出现valueError
倒序
list1.reverse()
排序
list1.sort()
#默认从小到大排序,不同参数排序不同
元组tuple
和list非常相近,但是不能改变
- 空元组 ()
- ⚠️创建元组的标志为逗号,而不是()
tuple1 = (2, 3, 4)
tuple2 = (2,)
tuple3 = tuple1 * 3
tuple4 = tuple1[:2] + ('hello',) + tuple3[:]
字符串
- python没有字符,只有字符串
- 不可以通过index修改element,可以使用slice修改
str1 = 'hello!world'
str1 = str1[:5] + ' ' + str1[6:]
字符串操作
下面主要总结可以做什么,不介绍函数
⚠️涉及查找的函数,可以支持从左或从右查找
- 改变大小写
- 居中,左对齐,右对齐 字符串
- 判断字符串是否以sub string结束/开始
- 判断字符串里有无数字,字母,大小写,title(首字母大写)
- 用字符串分隔所有字符
- 去掉/替换 字符串中指定的sub string
格式化字符串:将某一个element按照规定的格式输出
format
用{}来表示需要replacement的地方
- 未知参数 non-keyword
statement = "{0} has {1} files"
statement = statement.format("John", 10)
#⚠️format只是返回一个更新之后的字符串,并不是彻底更改statement
-------------------------
John has 10 files
- 关键字参数 keyword
statement = "{a} has {b} files"
statement = statement.format(a = "John", b = 10)
----------------------------
John has 10 files
可以混合使用未知&关键字,但是未知必须在关键字之前使用
如果想要打印 { }
a = '{{0.1}} is a {0}'.format('union')
print(a)
#{}用来转义{},相当于上面的转义符号,所以{1}会被当作普通character打印
---------------------
{0.1} is a union
格式化符号
%c
a = '%c %c %c' % (97, 99, 100) #⚠️一定要加括号
print(a)
-------------------
a c d
%s, %d
str1 = '%s += %d' % ('hello world!', 100)
print(str1)
------------------
hello world! += 100
%f, %e (%E), %g(%G)
%g 自动判断是使用小数还是科学记数法, 不支持指定精确到小数点后几位
#10.1, 10表示输出的结果至少为10位,如果不够空格来凑,1表示小数点后1位
str1 = '%0.1f == %10.1e == %g' % (1000000, 1000000, 1000000)
print(str1)
-----------------------
1000000.0 == 1.0e+06 == 1e+06
其他: 左右对齐,正数前面加+, 不同进制,规定输出width(可选用空格还是0来填充),百分比
BIF
assert
当condition结果为true时,程序正常运行。如果false,程序自动退出,显示assertion error
可以当作"break point“使用
assert a = 0
input
输出参数,读取用户输入的内容 (回车结束输入),返回内容
a = int(input("Please enter a number"))
range
建立int list
默认第一个参数为0,第三个为1
list2 = range(0, 10, 3)
#一个[0,10)的list,step为3
list
将参数变成一个list
没有参数是,创建一个empty list
list2 = list(string1)
list1 = list()
类似的函数还有str, tuple
len
返回一个序列的长度(elements的数量)
max , min
返回一个序列中的最大/小值
⚠️elements必须为同一个type
sum
⚠️elements必须为同一个type
所有elements的总和
enumerate
可以将列表里的elements和其index组成一个个元组,最后组成列表
zip
将几个list合成一个list
函数
def isEven (number):
if number % 2 == 0:
return True
else:
return False
函数文档
和注释一样,在调用函数的时候不会被执行,但是可以帮助理解这个函数
def sum(num1, num2):
'这是一个用来计算sum的函数‘
return num1 + num2
print(sum.__doc__)
#执行这个命令的时候,就会打印'这是一个用来计算sum的函数‘
关键字参数&默认参数
在没有输入参数时,使用默认参数
def sum(num1 = 3, num2 = 6): #默认参数
return num1 + num2
print(sum(num2 = 1, num1 = 2)) #关键字参数
print(sum())
收集参数
当不确定有多少个参数时
def sum(*params):
result = 0
for i in params:
result += i
print(result)
sum(1,2,55,43)
⚠️如果在收集参数之后,还想要添加别的参数。在调用的时候,要通过关键字参数的方法调用
print本身就有一个收集参数