今晚主要是python3的基础数据类型的学习。
#等待用户输入
# input("请输入:")
#将输入的值输出
# print(input("请输入"))
#python执行代码是一行一行执行的,若在同行中使用多条语句,可以用;进行分割
# print(888);print("999");
# a=10
# b=10
# #多行代码租场的代码组 称为子句 (注意缩进格式)
# if a==b:
# print("a==b")
# else:
# print("a!=b")
# 模块的导入
#导入整个模块
import sys
#调用模块中的函数 模块名.函数名
for i in sys.argv:
print(i)
print("python的路径为",sys.path)
#导入模块中的特定函数 不用模块名. 出来 而是可以直接用函数名
from sys import argv,path
print("导入部分函数测试")
print('path:',path)
print('argv:',argv)
# 数据类型
'''
python中变量不需要声明,比较自由,不像java一般需要把每个变量的类型确定死
比较灵活 但容易造成维护困难,程序不跑,可能不知道这个变量的类型
所以要注意写好注释
'''
number=100 #整型变量
weight=50.6 #浮点型变量
name ='小王' # 字符串
# 赋值方式 =号赋值
print(name,number,weight)
a=b=c=1 #多个变量赋值
print(a,b,c)
a,b,c='123',456,"用逗号多赋值"
print(a,b,c)
#python3中有六种标准数据类型
'''
Number 数字 不可变
String 字符串 不可变
List 列表 可变
Tuple 元组 不可变
Set 集合 可变
Dictionary 字典 可变
'''
# Number 数字类型
'''
整型 int 代表长整型
浮点型 float
布尔 bool (True和False 首字母一定要大写)
复数 complex
'''
#判断变量的类型
print(type(a),type(b),type(c)) # <class 'str'> <class 'int'> <class 'str'>
print(isinstance(a,int)) # 判断变量是否是这个类型 返回布尔值
# type 与 isinstance的区别
'''
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
'''
'''
当指定一个值的时候,Number对象就会被创建(应该可以理解为,指定值后,就分配了内存)
可以利用del语句删除引用
'''
temp=10;
print(temp)
del temp
# print(temp) # NameError: name 'temp' is not defined 被删除
# 数值运算
print(5+4) #加
print(5-4) #减
print(5*4) #乘
print(6/3) #除法 浮点数除法 得到结果是一个浮点数
print(6//2) # 除法 整数除法
print(7%3) #取余
print(2**5) # 乘方
# 在混合计算时,Python会把整型转换成为浮点数。
# 基本数据类型
# String 字符串
str="zxy test"
'''
要弄清楚的是python字符串可以从前往后截取,也可以从后往前截取
非常简单 根据下标截取
'''
print(str[1:3]) # 输出xy
print(str[0:3]) # 输出zxy
print(str[0:-1]) # 输出 zxy tes
# print(1+'')
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
# java中,经常把其他类型的变量加一个空串,就变成了字符串,python不可以
print(str[0])
# str[0]='9' # TypeError: 'str' object does not support item assignment
# python 不支持 用下标更改字符串
print(str[0])
# 基础数据类型
#List 列表 用[]
# 区分 java 中List是集合 而python中是 列表
'''
列表中元素可以是不同的类型
'''
list_1=[1,'a',2,'5','b','a',True]
print(list_1)
list_2=[9,10,'8',False]
#连接列表
print(list_1+list_2)
#列表的值是可以改变的
list_1[0]=100
print(list_1)
list_1[0:2]=[]
print(list_1)
# 步长读取
# list[statr:end:step]
# 元组
'''
元组与列表相似,但元组中的元素不能修改,用()
元组中的数据虽然不可变,但它可以含有可变的数据类型
'''
tuple_1=(1,2,3,4,5,6,'7')
print(tuple_1)
# tuple_1[0]=100 # TypeError: 'tuple' object does not support item assignment
# print(tuple_1) #不能修改
#修改元组中的可变类型的数据的值
tuple_2=(list_1,list_2)
print(tuple_2)
tuple_2[0][0]='100'
print(tuple_2)
# tuple_2[0]=100 # TypeError: 'tuple' object does not support item assignment
print(tuple_2)
# Set 集合
'''
使用{}或者set(value)函数创建
但空集合一定要用set函数创建,因为用{}创建空集合会被判定为创建一个字典
基本功能是进行成员关系测试和删除重复元素。
'''
# 可以用type函数来看看结果
# set_1={}
# print(type(set_1)) # <class 'dict'> 字典类型
set_1={1,5,3,5,'5',10,'10'}
print(set_1) # 输出 {1, 3, 5, '10', '5', 10} 集合会去掉重复元素
# 判定成员
if '10' in set_1:
print("'10' 在集合中")
else:
print("'10' 不在集合中")
# 使用函数创建集合
set_2=set('abcdefsaadasdsada')
print(set_2)
print(type(set())) # <class 'set'>
# 集合可以进行 集合运算
'''
a-b 差集
a | b 并集
a & b 交集
a^b a和b中不同时存在的元素
'''
a={1,2,3,4,5,6}
b={5,6,7,8,9,10}
print(a^b) # {1, 2, 3, 4, 7, 8, 9, 10}
# Dictionary 字典
'''
字典,key:value形式的集合 用{}标识
可以用java中的map理解,但没有泛型的严格规范
还可以当成最常用的json格式来看
'''
dict_1={} #一个空字典
dict_1[1]=1
print(dict_1[1])
dict_1['name']='zxy'
dict_1['name']='888'
print(dict_1)
dict_2={'name':'zxy','age':18,'weight':100,'name':'yyy'}
# 这会使name的值为yyy
print(dict_2)
print(dict_2.keys()) # 输出所有key
print(dict_2.values()) # 输出所有值
'''
key 必须为不可变类型,且不能重复 重复会覆盖
'''
# a=[1,2,3]
# dict_3={}
# dict_3[a] ='test' # TypeError: unhashable type: 'list' 不能为list
# 基本数据类型
# 数据类型转换函数
print(int('15')) # def __init__(self, x, base=10): 将x转换为int型整数,默认是十进制
print(float('18')) # 转化为浮点数
print(str(18)) # 转为字符串
print(repr(18)) # 转换为表达式字符串
'''
str 与 repr的区别
str()函数:将值转化为适于人阅读的字符串的形式
repr()函数:将值转化为供解释器读取的字符串形式
repr打印字符串时,会带上''号,对eval执行时比较有效
'''
print(eval('3*8')) #eval() 函数用来执行一个字符串表达式,并返回表达式的值。
test_list=[1,2,3,4,5,5,4,3,2,1]
test_tuple=(1,2,3,4,5,4)
test_set={1,2,3,4,5,6,5,4,3}
test_dict={'name':'zxy','age':18}
# 将序列转化为元组
print(tuple(test_list))
# 将序列转化为列表
print(list(test_tuple))
#转换为可变集合
print(set(test_tuple))
# 创建一个字典。d 必须是一个 (key, value)元组序列。
print(dict(zip(['one','two'],[1,2]))) # 映射函数方式来构造字典
print(dict([("name","zxy"),("age",12)]))
#创建一个不可变的集合
a=frozenset(test_list)
print(a)
# a[0]=100 # 'frozenset' object does not support item assignment
# print(a)
# 整数转字符
print(chr(97)) # ASCII 得到a
#字符转整数
print(ord('a')) # ASCII 得到97