输入输出 I/O
输入
>>> name = input("input your name:")
input your name:focksor
>>> name
'focksor'
输出
>>> variables_int = 1
>>> variables_str = "str"
>>> print("output:", variables_str, "v=%s" % variables_int)
output: str v=1
print中可以以
,
分隔,传入多个参数,这些参数要可以强制转换为str
类型,这些参数在输出时会自动在中间插入一个空格。不管是什么类型,
%s
就完事了
内建数据类型
整数
进制表示
整数在不同进制下的表示:
二进制0b100
,八进制0o100
,十进制100
,十六进制0x100
>>> 0b100
4
>>> 0o100
64
>>> 100
100
>>> 0x100
256
进制转换
转二进制:
>>> bin(100)
'0b1100100'
>>> bin(0o100)
'0b1000000'
>>> bin(0x100)
'0b100000000'
转八进制:
>>> oct(0b100)
'0o4'
>>> oct(100)
'0o144'
>>> oct(0x100)
'0o400'
转十进制:
>>> int("100", 2)
4
>>> int("100", 8)
64
>>> int("100", 16)
256
>>> int("100", 66)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0
>>> int(0b100)
4
>>> int(0o100)
64
>>> int(0x100)
256
转十六进制:
>>> hex(0b100)
'0x4'
>>> hex(0o100)
'0x40'
>>> hex(100)
'0x64'
浮点数
>>> 123.456789
123.456789
>>> 123.456789e6 # 科学计数法
123456789.0
布尔型
>>> True and False # 与
False
>>> True or False # 或
True
>>> not False # 否
True
>>> not True or True and False # 优先级
False
and
,or
,not
的优先级:or < and < not
,同一优先级从左往右计算。not True or True and False运算过程:
-> False or True and False
-> False or False
-> False
字符串
>>> "hello world!"
'hello world!'
字符串拼接
>>> "hello %s!"%"god_fish"
'hello god_fish!'
>>> "{0} and {1} are {2}.".format("XiaoMing", "XiaoHong", "friends")
'XiaoMing and XiaoHong are friends.'
编码转换
单字符转换:
>>> ord("中")
20013
>>> ord("A")
65
>>> chr(20013)
'中'
>>> chr(65)
'A'
字符串转换:
>>> "中文".encode("utf8")
b'xe4xb8xadxe6x96x87'
>>> b'xe4xb8xadxe6x96x87'.decode("utf8")
'中文'
>>> "ABC".encode("utf8")
b'ABC'
>>> b'ABC'.decode("utf8")
'ABC'
>>> b'ABC'.decode("ascii")
'ABC'
列表/list
下标索引:
>>> l = ['a', 'b', 'c', 1, 2, False]
>>> l
['a', 'b', 'c', 1, 2, False]
>>> l[0]
'a'
>>> l[1]
'b'
>>> l[-1]
False
追加元素:
>>> l
['a', 'b', 'c', 1, 2, False]
>>> l.append(True)
>>> l
['a', 'b', 'c', 1, 2, False, True]
插入元素:
>>> l
['a', 'b', 'c', 1, 2, False, True]
>>> l.insert(3, 'd')
>>> l
['a', 'b', 'c', 'd', 1, 2, False, True]
推出元素:
>>> l
['a', 'b', 'c', 'd', 1, 2, False, True]
>>> l.pop(3)
'd'
>>> l
['a', 'b', 'c', 1, 2, False, True]
列表中的各个元素类型可以不一样。
列表切片
l = list(range(10))
print("原始列表:")
print(l)
print("取列表的[start, 3)部分, 即l[0],l[1],l[2],不包括l[3]")
print(l[:3])
print("取列表的[5, end]部分")
print(l[5:])
print("取列表的[3,5)部分")
print(l[3:5])
print("取列表的[-3, end]部分,这里的索引-3是指倒数第三个")
print(l[-3:])
print("取列表的[start, -3)部分")
print(l[:-3])
print("取列表的[3,8)部分,每两位取一次")
print(l[3:8:2])
print("取整个列表,每两位取一次")
print(l[::2])
原始列表:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
取列表的[start, 3)部分, 即l[0],l[1],l[2],不包括l[3]
[0, 1, 2]
取列表的[5, end]部分
[5, 6, 7, 8, 9]
取列表的[3,5)部分
[3, 4]
取列表的[-3, end]部分,这里的索引-3是指倒数第三个
[7, 8, 9]
取列表的[start, -3)部分
[0, 1, 2, 3, 4, 5, 6]
取列表的[3,8)部分,每两位取一次
[3, 5, 7]
取整个列表,每两位取一次
[0, 2, 4, 6, 8]
列表迭代
l = list(range(10))
print("迭代列表中的所有元素")
for i in l:
print(i)
print("以【索引+元素】方式迭代列表")
for i,v in enumerate(l):
print("索引为%s的元素是%s" % (i, v))
迭代列表中的所有元素
0
1
2
3
4
5
6
7
8
9
以【索引+元素】方式迭代列表
索引为0的元素是0
索引为1的元素是1
索引为2的元素是2
索引为3的元素是3
索引为4的元素是4
索引为5的元素是5
索引为6的元素是6
索引为7的元素是7
索引为8的元素是8
索引为9的元素是9
元组/tuple
元组可以看作是不可变的列表,相比列表,tuple一经初始化便不能修改,相比list来说,更节省运行资源。
>>> t = (1, 2, 3, "a", "b", "c")
>>> t[0]
1
>>> t[1]
2
>>> t[-1]
'c'
>>> t[-2]
'b'
字典/dict
字典是通过哈希计算获得值的,存取速度与字典大小无关。
>>> d={"a":70, "b":80, "c":90}
>>> d["a"]
70
>>> d["a"]=71
>>> d
{'a': 71, 'b': 80, 'c': 90}
以安全方式获取值:
>>> d
{'a': 71, 'b': 80, 'c': 90}
>>> d.get("a", 100)
71
>>> d.get("d", 100)
100
弹出键值对:
>>> d.pop("a")
71
>>> d
{'b': 80, 'c': 90}
字典迭代
print("迭代字典中的所有元素")
for i in d.keys():
print(i, "->", d[i])
for k,v in d.items():
print(k, "->", v)
集合/set
集合可看作没有
值
的字典,其内部的元素是不可重复的。
创建集合:
>>> s = set([1,2,3,3,4])
>>> s
{1, 2, 3, 4}
添加元素:
>>> s
{1, 2, 3, 4}
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
删除元素:
>>> s
{1, 2, 3, 4, 5}
>>> s.remove(5)
>>> s
{1, 2, 3, 4}
判断
>>> if a<b:
... printf(a, "<", b)
... elif a==b:
... print(a, "=", b)
... else:
... print(a, ">", b)
...
循环
>>> sum=0
>>> for i in range(100+1):
... sum += i
...
>>> sum
5050