python
exit()
python test.py
输入输出
print('2\n2')
print(1, 2, 3)
name = input()
print(':', name)
数据类型和变量
# 注释
print(1.23e9)
print('I\'m \"OK\"')
print(r'\\\t\\') # r''不转义
print('''line1
line2
line3''') # 多行
# True False
# and or not
print(True or False)
# 空值 Node
# 变量
# 常量
# 在Python中,通常用全部大写的变量名表示常量
PI = 3.14159265359
# 但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变
# / // %
print('9/3', 9 / 3)
print('10//3', 10 // 3)
print('10%3', 10 % 3)
字符串和编码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
#第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码
#申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码
print("ord('A')", ord('A'))
print("ord('中')", ord('中'))
print("chr(66)", chr(66))
print("chr(25991)", chr(25991))
print("'\\u4e2d\\u6587'", '\u4e2d\u6587')
print('ABC'.encode('ascii'))
print('中文'.encode('utf-8'))
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
print(len('ABC'))
print(len('中文'))
print(len(b'ABC'))
print(len(b'\xe4\xb8\xad\xe6\x96\x87'))
print(len('中文'.encode('utf-8')))
#%d 整数
#%f 浮点数
#%s 字符串
#%x 十六进制整数
print('Age: %s. Gender: %s %%' % (25, True))
list
#list
classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)
#个数
print(len(classmates))
#最后一个元素
print(classmates[-1])
#添加
classmates.append('Adam')
print(classmates)
#指定位置添加
classmates.insert(1, 'Jack')
print(classmates)
#删除末尾的元素
classmates.pop()
print(classmates)
#删除指定位置的元素
print(classmates.pop(1))
print(classmates)
#替换
classmates[1] = 'Sarah'
print(classmates)
tuple
#tuple
#因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
classmates = ('Michael', 'Bob', 'Tracy')
print(classmates[0])
#定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,
#因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
t = (1)
print(t)
t = (1,)
print(t)
t = (1, 2, ['a', 'b'])
print(t)
#tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
#即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的
t[2][0] = 'x'
t[2][1] = 'y'
print(t)
循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
sum = 0
for x in [1, 2,3,4,5,6,7,8,9,10]:
sum = sum + x
print(sum)
sum = 0
for x in range(101):
sum = sum + x
print(sum)
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
dict
d = {
'Michael': 95,
'Bob': 75,
'Tracy': 85
}
print(d['Michael'])
#第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,
#然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
#dict就是第二种实现方式,给定一个名字,比如'Michael',dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,
#也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
d['Adam'] = 67
print(d)
print('Adam' in d)
#如果key不存在,可以返回None,或者自己指定的value
print(d.get('Thomas'))
print(d.get('Thomas', -1))
#dict内部存放的顺序和key放入的顺序是没有关系的
#和list比较,dict有以下几个特点:
#查找和插入的速度极快,不会随着key的增加而增加;
#需要占用大量的内存,内存浪费多。
#而list相反:
#查找和插入的时间随着元素的增加而增加;
#占用空间小,浪费内存很少。
set
#set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
#无序
#重复元素在set中自动被过滤
s = set([1,2,3,1,2])
print(s)
s.add(4)
print(s)
s.remove(1)
print(s)
s1 = set([1, 2,3])
s2 = set([2,3,4])
#交集
print(s1 & s2)
#并集
print(s1 | s2)
a = ['c', 'b', 'a']
a.sort()
print(a)
a = 'abc'
b = a.replace('a', 'A')
print(b, a)