Python基础
print()
函数可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:
>>> print('The quick brown fox', 'jumps over', 'the lazy dog')The quick brown fox jumps over the lazy dog
Python的语法比较简单,采用缩进方式;
# print absolute value of an integer:a = 100
if a >= 0:
print(a)
else:
print(-a)
# 开头的是注释;其他每一行都是一个语句,当语句以冒号:
结尾时,缩进的语句视为代码块。
缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。
Python程序是大小写敏感的,如果写错了大小写,程序会报错。
数据类型和变量
整数、浮点数、字符串
如果 ' 本身也是一个字符,那就可以用 "" 括起来,比如 "I'm OK" 包含的字符是I,',m,空格,O,K这6个字符。
字符串内部既包含'又包含" ---可以用转义字符\
来标识
'I\'m \"OK\"!'
转义字符\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
>>> print('I\'m ok.')I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\
布尔值可以用and
、or
和not
运算。
空值是Python里一个特殊的值,用None
表示。None
不能理解为0
,因为0
是有意义的,而None
是一个特殊的空值。
a = 'ABC'b = a
a = 'XYZ'
print(b)
最后一行打印出变量b
的内容到底是'ABC'
呢还是'XYZ'
?如果从数学意义上理解,就会错误地得出b
和a
相同,也应该是'XYZ'
,但实际上b
的值是'ABC'。
执行a = 'ABC'
,解释器创建了字符串'ABC'
和变量a
,并把a
指向'ABC'
:
执行b = a
,解释器创建了变量b
,并把b
指向a
指向的字符串'ABC'
:
执行a = 'XYZ'
,解释器创建了字符串'XYZ',并把a
的指向改为'XYZ'
,但b
并没有更改:
所以,最后打印变量b
的结果自然是'ABC'
了。
在Python中,通常用全部大写的变量名表示常量。
在Python中,有两种除法:
一种除法是/
>>> 10 / 33.3333333333333335
/
除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
>>> 9 / 33.0
还有一种除法是//
,称为地板除,两个整数的除法仍然是整数:
>>> 10 // 33
Python还提供一个余数运算,可以得到两个整数相除的余数:
>>> 10 % 31
字符串和编码
Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言
>>> print('包含中文的str')包含中文的str
对于单个字符的编码,Python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符:
>>> ord('A')65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
计算str
包含多少个字符,可以用len()
函数:
>>> len('ABC')3
>>> len('中文')
2
Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
使用list和tuple
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
>>> classmates = ['Michael', 'Bob', 'Tracy']>>> classmates
['Michael', 'Bob', 'Tracy']
变量classmates
就是一个list。用len()
函数可以获得list元素的个数:
>>> len(classmates)3
用索引来访问list中每一个位置的元素,记得索引是从0
开始的,
>>> classmates[0]'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
最后一个元素的索引是len(classmates) - 1
。
如果要取最后一个元素,除了计算索引位置外,还可以用-1
做索引,直接获取最后一个元素:
>>> classmates[-1]'Tracy'
往list中追加元素到末尾:
>>> classmates.append('Adam')>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
也可以把元素插入到指定的位置,比如索引号为1
的位置:
>>> classmates.insert(1, 'Jack')>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
删除list末尾的元素,用pop()
方法:
>>> classmates.pop()'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
删除指定位置的元素,用pop(i)
方法,其中i
是索引位置:
>>> classmates.pop(1)'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:
>>> classmates = ('Michael', 'Bob', 'Tracy')
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
只有1个元素的tuple定义时必须加一个逗号,
,来消除歧义(括号()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义):
>>> t = (1,)>>> t
(1,)
看一个“可变的”tuple:
>>> t = ('a', 'b', ['A', 'B'])>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素(tuple的第三个元素是list)。
条件判断
在Python程序中,用if
语句实现:
age = 20if age >= 18:
print('your age is', age)
print('adult')
age = 3if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
注意不要少写了冒号 :
elif
是else if
的缩写,完全可以有多个elif
,所以if
语句的完整形式就是:
if <条件判断1>:<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if
语句执行有个特点,它是从上往下判断,如果在某个判断上是True
,把该判断对应的语句执行后,就忽略掉剩下的elif
和else
,所以,下面的程序打印的是teenager
:
age = 20if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
str字符串转为整数:使用 int() 函数
循环
Python的循环有两种,一种是 for...in 循环
names = ['Michael', 'Bob', 'Tracy']for name in names:
print(name)
for x in ...
循环就是把每个元素代入变量x
,然后执行缩进块的语句。
想计算1-10的整数之和,可以用一个sum
变量做累加:
sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()
函数,可以生成一个整数序列,再通过list()
函数可以转换为list。比如range(5)
生成的序列是从0开始小于5的整数:
>>> list(range(5))[0, 1, 2, 3, 4]
range(101)
就可以生成0-100的整数序列
sum = 0for x in range(101):
sum = sum + x
print(sum)
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。
计算100以内所有奇数之和:
sum = 0n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
在循环内部变量n
不断自减,直到变为-1
时,不再满足while条件,循环退出。
在循环中,break
语句可以提前退出循环:
n = 1while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
打印出1~10后,紧接着打印END
,程序结束。break
的作用是提前结束循环。
在循环过程中,也可以通过continue
语句,跳过当前的这次循环,直接开始下一次循环。
打印1-10之间的奇数:
n = 0while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
打印的不再是1~10,而是1,3,5,7,9。
continue
的作用是提前结束本轮循环,并直接开始下一轮循环。
使用dict和set
dict
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']
95
要删除一个key,用pop(key)
方法,对应的value也会从dict中删除:
>>> d.pop('Bob')75
>>> d
{'Michael': 95, 'Tracy': 85}
set
set和dict类似,也是一组key的集合,但不存储value。
教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431658427513eef3d9dd9f7c48599116735806328e81000
以上是 Python基础 的全部内容, 来源链接: utcz.com/z/388202.html