【Python学习笔记(二)—— 变量和数据类型】

Python学习笔记(二)

1.变量定义赋值

age =3;           #//变量赋值(实现,获得空间)
                  #//1age =5;   (报错 命名:数字不能在前)               
name = 'ivan';    #//变量赋值字符串类型
girl = {'name':'lili','age':30}; #//变量赋值字典类型
a,b=1,2;          #//多重赋值, 拆解为  a=1;  b=2; 
a = b = 1;        #//连续赋值, 拆解为  a=1;  b=1;

2.基础数据类型

基础数据类型分为三种,分别是数字(整形 浮点型 复数)、字符串和布尔值(逻辑判断)。
数字

a,b,c = 10,3.14,1+2j  
print(a,b,c)
print(a+c) 
print(c,type(c))

字符串

str = 'hello baby'; 
print(str,str[1],str[2:4],str[6:]); 
name="good" 
print(str+name);

布尔值

ret = 2>1;
print(ret); 
ret =False;
if(ret):
  print('this is true');
else:
  print('this is false');

3.复合数据类型

复合数据类型分为四种,分别是列表、元祖、集合和字典。其中比较常用的是列表和字典。
列表(升级版的数组)

train = [50,20,'apple'];
print(train);
list = train;
train[2] = 'tv';
print(train);
print(list);

元组(只读的列表)

tuples = (1,6,'ivan',3,'good',77);
print(tuples);       #//输出 (1,6,'ivan',3,'good',77)
print(tuples[1]);    #//输出 6
print(tuples[1:3]);  #//输出 (6, 'ivan')   
	
tuples[1]=2;        #//报错,元祖是禁止修改的			

tu2 =(56,'yzg',3)
print(tuples+tu2)   #//拼接

print(tuples[2.0])  #//报错:TypeError: tuple indices must be integers or slices, not float 
                    #原因时类型不匹配,需把2.0  转为int 用 int(2.0)

集合(无序且不重复)

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket);
print('banana' in basket);

字典(键值对,类似JSON对象)

man={'name':'ivan','age':30};
print(man);
obj={};  #//定义空的字典对象
obj['name']='yzg';
obj['age']=28;
print(obj['name'],type(obj));
man = obj;
obj['age'] =10;
print(man);

4.空间分配

核心一句话:变量里存放的是对象的引用地址

str1 = "ivan";
str2 = str1;    #//赋值是 引用的拷贝(引用是指向实体的地址)
print(id(str1)) #//id() 是查看对象的存储地址
print(id(str2))
print('str1 = ' + str1);  
print('str2 = ' + str2); 	
str1 = "yzg";
print(id(str1))
print(id(str2))

运行结果

140509725583344
140509725583344
str1 = ivan
str2 = ivan
140509725583600
140509725583344

测试:下面程序输出为多少?

o1={};
o2=o1;  #//变量里存放的是地址,变量赋值时只是传递了地址。实体只有一个 
o2['name']="CSSer";
print(o1['name']);

答案是Csser,因为o1和o2里存放的是相同的地址,地址指向同一对象实体。o2把对象的值改变了,o1读出的对象的值相应也改变了。

5.嵌套引用

通过嵌套引用,可以扩展表示复杂数据结构。

train = [50,20,'apple'];
train[1] ={'name':'lili','age':30}
print(train)


#//可把函数名,看成指向代码块的引用
def gogo():
    print("i can gogogo")
    
train[1]['teach']=gogo  
print(train)
train[1]['teach']()	

输出结果

[50, {'name': 'lili', 'age': 30}, 'apple']
[50, {'name': 'lili', 'age': 30, 'teach': <function gogo at 0x7f76d22efdc0>}, 'apple']
i can gogogo

6.数据运算

算数: + - * / %取模(求余) **幂 //取整除

print(6+3*5/2); 
#//---浮点型精度问题(因二进制,0.333表示有问题)运算中有0.3出现都会有问题
print(0.3-0.2);             #输出0.099  
print(0.1+0.2==0.3);        #输出 false
#//解决方法:放大后再缩小
print((10*0.1+10*0.2)/10==0.3); #输出 true 
#//---% 取模(求余)
print(3%2);  #单双数判断

#//---优先运算加 ()  
print((10+20)/2);  

print(2**3);  #//2的3次方(幂)
print(9//2);  #//取整除 为4

赋值运算:= += -= *= /= %= **= //=

a=2; 	 
a+=3 	  #//与 a = a+3; 相同
print(a); 
a%=2;     #//与 a = a%2; 相同
print(a);    
a**=3
print(a);    
a = 9; 
a//=4
print(a);   

比较:< > <= >= == !=

age =18;
if(age>=18):
  print('成年');

today ='11.10';
if(today!='11.11'):
  print('双11还未到');

a=2;
b='2';
if(a==b):
  print('值相等');

位运算:&与 |或 ~非 ^异或 <<左移 >>右移

a=60 		#//对应二进制00111100
b=13 		#//对应二进制00001101
print(a&b)    # 00001100
print(a|b)    # 00111101
print(a^b)    # 00110001
print(~a)     # 11000011
c=4           # 00000100
print(c<<1)   # 00001000
print(c>>1)   # 00000010

逻辑运算:and与 or或 not非 in not in is is not

age =25;
print('是青年吗 ',(age>18 and age<30));

hasHouse,money =True,1000;
#hasHouse,money =False,1000;
if(hasHouse or money>1000000):
  print("有房或有100万,嫁给他")

if not(hasHouse or money>1000000):
  print("即没房也没100万,不嫁")

list = [1,2,3,4,8];
print('3在list中吗',3 in list);
print('6不在list中吗',6 not in list);

lili = {'name':'lili','age':30};
x = lili;
x['name']='linda';
print(x,'是lili这个人吗',x is lili);

7.类型转换

#//int() 转换为整型数字 	
print(int(3.14)+2);	
print(int('12')+5);
print(int(0xa)+3); 
#//转float
print(float(3)+1.24);		
#//str() 转换为字符串    
print(str('12')+'5');

lili = {'name':'lili','age':30};
print(str(lili)+'good');
print(lili+'good'); #fail  	

#//隐式转换(自动转换)   
name = 'ivan';  print(name[1]); #//字符串转换为列表 --> 查找某位置的字符
print( '7'+'people');           #//数字转换为字符串	--> 进行拼接
print( '7'-'people');           #//报错:隐式转换失败 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值