Python基础速通
相关标签: # php# java# python# java# 数据
# print() tip
print('it', 'is' , 'apple') # 逗号在输出中呈现为一个空格
print('''line1
line2
line3''') #实现多行输出
# if tip
# eg1:
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
# booler tip
# True False
# and or not
# else tip
a = 'ABC' # 先开辟内存,定义变量a和字符串'ABC',再让a指向'ABC'
b = a # b指向a的内容'ABC',这个操作实际上是把变量b指向变量a所指向的数据
a = 'XYZ' # a指向'XYZ'
print(b) # a指向 , 最后输出'ABC'
# encodeing tip
ord('A') # ord()获取字符的整数表示
# output: 65
ord('中')
# output: 20013
chr(66) # chr()把编码转换为对应字符
# output: 'B'
chr(25991)
# output: '文'
# 由于Python的字符串类型是str,一个字符对应若干个字节,如果要网络传输或保存磁盘,就需要把str变为以字节为单位的bytes
'ABC'.encode('ascii')
# output: b'ABC' #b前缀表示byte类型
b'ABC'.decode('ascii') # 编码后当然要进行解码喽
# output: 'ABC'
# 格式化
'Hello, %s' % 'world'
# output: 'Hello, world'
'Hi, %s, you have $%d.' % ('Michael', 1000000)
# output: 'Hi, Michael, you have $1000000.'
# 常见占位符除以上两种外还有浮点数%f和十六进制整数%x,也可以无脑%s反正是字符串
# 若字符为普通字符则需要转义
'growth rate: %d %%' % 7 # 双%转义输出自然为单个%
# output: 'growth rate: 7 %'
# datatype tip
# list 列表
classmates = ['Mike','Sarh']
len(classmates) # output: ['Mike','Sarh']
classmates[0] = 'Alice' # 访问元素并赋新值,从0开始,别越界
classmates[-1] # 取最后一个元素,同理-n就是取倒数第n个
classmates.append('John') # 末尾加个元素John
classmates.insert(1,'John') # 索引为1的地方加个John
classmates.pop(i) # 删除第i个位置的元素,不写的话默认删除末尾元素
# list可以包含其他list,若要访问内部list则需要写成n维数组的形式
p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']
len(s) # output: 4
# 要拿到'php'可以写p[1]或者s[2][1]
# tuple 元组
# 和list差别在于不能修改
classmates = ('Michael', 'Bob', 'Tracy')
t = (1,) # 定义只有1个元素的tuple.注意!逗号是不可以省略的,否则就当成小括号进行运算了
# 元组虽然不能改变,但是元组内的列表内的值可变(虽然是一个元组元素,但是内壳本质上还是列表嘛)
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
t # output: ('a', 'b', ['X', 'Y'])
# dict 字典
# 键值对er式存储,比list搜索效率更高
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael'] # output: 95
# 当然也能赋值,前提是key存在,可以通过例如'Jack' in d来判断
d['Jack'] = 90
d.pop('Bob') # pop语句删除一个键值对
# 需要注意的是key是不可变的
# set
# 类似dict,但是只有键没有值,要创建一个set,需要提供一个list作为输入集合
s = set([1, 2, 3])
s
# output: {1, 2, 3}
s.add(4)
s
# output: {1, 2, 3, 4}
s.remove(4)
s
# output: {1,2,3}
# set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s1 & s2
# output: {2, 3}
s1 | s2
# output: {1, 2, 3, 4}
# set的原理和dict一样,所以不可以放入可变对象,因为无法判断两个可变对象是否相等
# circle tip
# for...in
# eg1:
names = ['Michael', 'Bob', 'Tracy']
for name in names: # 输出列表内元素
print(name)
# eg2:
sum = 0
for x in [1, 2, 3, 4, 5]: # 也可以表示为for x in range(6),表示0~6
sum = sum + x
print(sum)
# while
# eg1:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
# break直接退出,continue结束本轮开始下一轮,通常都必须配合if
# function tip
# eg1:
def my_abs(x):
if x >= 0:
return x
else:
return -x
# eg2:
import math
def quadratic(a, b, c):
x1 = (-b + math.sqrt((b * b) - (4 * a * c))) / (2 * a)
x2 = (-b - math.sqrt((b * b) - (4 * a * c))) / (2 * a)
return x1, x2
print('quadratic(2,3,1) = ', quadratic(2, 3, 1))
print('quadratic(1,3,-4) = ', quadratic(1, 3, -4))
if quadratic(2, 3, 1) != (-0.5, -1.0):
print('测试失败')
elif quadratic(1, 3, -4) != (1.0, -4.0):
print('测试失败')
else:
print('测试成功')
# output: quadratic(2,3,1) = (-0.5, -1.0)
# quadratic(1,3,-4) = (1.0, -4.0)
# 测试成功
# 当return多输出时输出的形式为tuple,同理多输入时也是tuple
# 默认参数
# eg1:
def power(x, n=2): # 当在调用该函数时默认是x^2,以便于后续输入不同n
s = 1
while n > 0:
n = n - 1
s = s * x
return s
# eg2:
def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
enroll('Sarah', 'F')
# 对默认参数进行修改
enroll('Bob', 'M', 7)
enroll('Adam', 'M', city='Tianjin')
# 注意: 默认参数必须指向不变对象
# 可变参数
# eg1:
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
nums = [1, 2, 3]
calc(*nums) # 加*示意为可变参数,nums可以取任意数目的列表输入
# 递归
# eg1:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
print(fact(5)) # 小心栈溢出
# List Comprehensions tip
# eg1:
[x * x for x in range(1, 11) if x % 2 == 0]
# output: [4, 16, 36, 64, 100]
# eg2:
[x if x % 2 == 0 else -x for x in range(1, 11)]
# output: [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
文章来源: https://blog.51cto.com/u_15493333/5993010
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报