变量数据存储原理图:
练习代码笔记
# -*- coding: utf-8 -*-
#变量名不能与内置类型相同,比如 list
def say_hello(name):
print("hello {}".format(name))
print("hello")
say_hello("world");
#变量没有类型,值有类型,可以把任意值赋给同一变量
score = 60
print(score)
score = "60分"
print(score)
name="tom"
print(name)
name2="tom"
"""
查看存储内存地址标识
256以下的数字被缓存,内存地址一样
短字符串内存地址有可能一样
"""
print(id("tom"))
print(id(name2))
print(name is name2)
"""
值判断
"""
print(name == name2)
"""
内置类型
"""
print(type(8))
print(type(3.14))
print(type(name))
l1=[1,5,3,7,9]
l2=l1.sort();#列表排序
print(l1)
print(l2 is None)#判断是否相等
print(5>3)
"""
二进制
"""
print(0b1101)
"""
八进制
"""
print(0o177)
"""
十六进制
"""
print(0x9ff)
"""
基本:
+ - * / %
计算次方 **
整除 //
"""
print(10+int("30"))#类型强转
print(10+float("3.14"))#类型强转
print(bin(10))#转为二进制
print(oct(10))#转为八进制
print(hex(10))#转为十六进制
x=22/7
import math
"""
向下/上取整
"""
print(math.floor(x))
print(math.ceil(x))
print(math.trunc(x))#去掉小数部分
print(round(x))#四舍五入
print(pow(x,2))#平方
print(math.sqrt(x))#开平方
"""
精度处理
"""
import decimal
print(0.1+0.1+0.1-0.3)
#print(decimal.Decimal('0.1')+decimal.Decimal('0.1')+decimal.Decimal('0.1')-decimal.Decimal('0.3'))
from decimal import Decimal
x=Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
print(x)
#bool类型,
#判断时,True=1,False=0
#转换时,0/空对象(列表、字符串、元组、字典等等)/None为False,其他为True
print(True == 1)
b = bool(3)
print(b)
#序列:list列表属于可变序列,任意类型、可变、可嵌套
scores=[60,70,88.5,90]
print(scores)
print(scores[0])#指定下标
#负下标,-1倒数第1,-2倒数第2……
print(scores[-1])
print(scores[0:2])#指定范围,第1到第3(不包括),等于scores[:2]
print(scores[2:])#第3到最后
print(scores[::2])#指定步长
print(len(scores))#列表长度
print(min(scores))#最小值
print(max(scores))#最大值
print(sum(scores))#总和
print(scores.index(70));#查找索引
print(scores.count(70));#元素值个数
scores.append(99) #添加元素到列表
print(scores)
scores.append(["zhang","san"])#添加一个列表为列表元素,嵌套
scores[0]=60.5 #改变列表中元素的值(指向)
print(scores)
print(type(list))
l = list('abcd')#初始化列表
print(l)
l = list(range(5))#初始化列表
print(l)
names=["zs","ls","we"]
print(names)
print("ls" in names)#判断元素是否在列表中
print("ls" not in names)#判断元素是否不在列表中
l2=[5,6]
print(l+l2)#两个列表相加
print(l2*2)#重复n次
l1=list(range(1,11))
l2=[11,12]
l1[0:2]=l2#范围替换
print(l1)
l1[0:2]=[21]#范围内多个替换为一个
print(l1)
l1[::2]=[99,99,99,99,99]#按步长赋值,给的列表要与要替换值的个数一样
print(l1)
del l1[0]#删除,可指定范围与步长
del l1[:2]#删除一个范围,等同于 l1[:2]=[]
print(l1)
l1.remove(99)#按值删除,删除找到的第1个
#l1.clear() #清空队列,2.X版本不支持
print(l1)
l1.extend([30,31])#增加多个元素,append是只能增加一个元素
l1.insert(0,-1)#插入元素,可指定位置
print(l1)
l1[2:2]=[22]#插入元素,在2与2之间,意思就是新元素位置
print(l1)
r = l1.pop()#不指定索引则弹出最后一个元素,l1.pop(index)指定索引
print(l1)
print(r)
l1.reverse()#反转队列
print(l1)
l=list(range(1,11))
s=l[:]#复制一份值,不能直接 s=l,不然两个变量共享引用
#s=l.copy()#复制,2.X不支持
print(s)
p=['Jr','Jo','Mk',',Tm','Pt']
p.sort(key=lambda x:x[-1])#按最后一个字符排序
print(p)
l.sort(reverse=True);#从大到小排序
print(l)
print(sorted(l))#全局排序,有参数key、reverse,参数本身不变,返回值为排序后的值
print(l)