recor-02 数据类型转换函数、运算符、格式符

#__author: hasee
#date:  2018/1/5
#数据类型转换函数

#int() 将其他类型的数据转换成整型
#int()转换浮点型数只会取整
print(int(1.93))
#int()转换字符串类型的数据,要求字符串中不能出现数字之外的字符
print(int('12345')+1)
#int()可以转换布尔值数据,True=1,False=0
print(int(True))
print(int(False))


#float() 将其他类型的数据转换成浮点型
#float()可以转换整型数据,默认追加一位小数位
print(float(123))
#float()转换字符串类型的数据,要求字符串中不能出现数字和小数点(1次)之外的字符
print(float('1.23')+1.0)
#float()可以转换布尔值数据,True=1.0,False=0.0
print(float(True))
print(float(False))


#str() 将其他类型的数据转换成字符串
print(str(100)+'abc')
print(str(True)+'abc')


#bool() 将其他类型的数据转换成布尔值
#除0之外的所有整数都是True
print(bool(0))
print(bool(123))
#除0.0之外的所有小数都是True
print(bool(0.0))
print(bool(0.1))
#除空字符串之外的所有字符串都是True
print(bool(''))
print(bool(' '))
#空值None
print(bool(None))


#程序练习
print('how old are you:')
age=int(input())
print('Next year you are:',age+1)

#猜数字:设计一个程序,程序内部设置一个数值,让用户猜这个值是多少(可以提示用户猜的值与预设的值大小关系)

#面向过程编程-以事件为中心
#梳理事件的过程
#明确过程中每一个环节程序要做的工作
#将每个环节程序要做的工作通过代码编写出来



#事件-猜数字
#1、程序先设置一个正确的数值
num=66
#2、程序提示用户猜数字
print("请输入一个数字:")
#3、用户输入猜的数字
#4、程序接收用户的输入
user=int(input())
#5、程序进行数值比较
#6、程序输出比较结果
print("判断是否相等:",user==num)
print("判断是否大:",user>num)
print("判断是否小:",user<num)

#算术运算符
print(1+2)
print(2-1)
print(2*3)
print(10/3) #结果除不尽时,小数位可能有偏差
print(2**3) #求2的3次方
print(9//2) #保留除法运算结果的整数部分,并不会四舍五入
print(10%3) #求余运算、取模运算,计算除法时不能被整除的余数

#比较运算符
print(2==3)
print(2!=3)

#逻辑运算符
print(not 1==1)
print(1>2 and 2>1)
print(1>2 or 2>1)

#二进制运算符
#0b1010 二进制
#0o567 八进制
#0xABCDEF 十六进制
print(0b101<<1) #0b1010 左移,多出来的低位补0
print(0b101>>1) #0b10 右移,多出来的低位删除
print(0b101 & 0b110) #0b100 两个二进制数据相同位上数字都为1时,结果这一位才为1,否则为0
print(0b101 | 0b110) #0b111 两个二进制数据相同位上数字只要有一个为1,结果这一位为1,否则为0
print(0b101 ^ 0b110) #0b011 两个二进制数据相同位上的数字不一样,结果这一位为1,否则为0
print(~0b101) #将一个二进制数据+1,再求负数


#运算符优先级
#算术运算符>二进制运算符>比较运算符>逻辑运算符
print(not 1==1 and 2>1 or 1>2)
print(1+2>2)

#字符串格式化  完成字符串数据的格式化处理
#将数据插入到字符串的任意位置
#插入数据时不需要做数据类型转换处理

#格式符-数据类型
#%d 代表整型数据
print("I am %d year old"%20)
#%f 代表浮点型数据
print("I have %f yuan money"%50.5)
#%s 代表字符串数据
print("My name is %s.I am 20 year old"%'zhangsan')
print("My name is %s.I am 20 year old"%True)
#%r 代表字符串数据
print("My name is %r.I am 20 year old"%'zhangsan')


#格式符-精度
print("I have %.2f yuan money"%50.5)

#格式符-宽度
print("I have %.2f yuan money"%50.5)
print("I have %5.2f yuan money"%1.5)
print("I have %5.2f yuan money"%123.456)

#格式符-标签 + - 0
print("I have %+.2f yuan money"%50.5) #显示数据的符号
print("I have %-5.2f yuan money"%1.5) #控制对齐方式
print("I have %010.2f yuan money"%1.5) #设置0填充
print("I have %-010.2f yuan money"%1.5) #填充设置与其他设置冲突,则不生效
print("I have %-010d yuan money"%100) #填充设置与其他设置冲突,则不生效


#多个格式符
print("My name is %s.I am %d year old"%('zhangsan',20))
#%后面智能跟一个独立的,所以用一个有序的数组()来对应接受


#格式符-名字 不用在意传递值的顺序
print("My name is %(a)s.I am %(b)d year old"%{'a':'zhangsan','b':20})
#通过设置占位名,利用字典来定义,顺序可以无序,因为占位名已经通过字典和对应的数据精确匹配
print("My name is %(a)s.I am %(b)d year old"%{'b':20,'a':'zhangsan'})



#将格式符的宽度、精度变为动态的数值
print("I have %*.*f yuan money"%(10,2,1.5))  #通过设置*可以接受动态的参数



print("hello."+"My name is %s"%'zhangsan')

  

posted @ 2018-01-05 22:15  minkillmax  阅读(192)  评论(0编辑  收藏  举报