数值类型
一、 数值类型分为三种
1.int型
整型通常被称为整型或整数,是正或负整数,不带小数点
2.float型
浮点型由整数部分与小数部分组成
float(‘INF’) 表示正无穷
float(‘-INF’) 表示负无穷
3.complex型
复数由实数部分和虚数部分构成,可以用a+b,或者complex(a,b)表示,复数的实部a和虚部都是浮点型
4.bool型
布尔型,通常用于判断,语法是:FALSE和TRUE
二、 math模块中的常用方法
1.ceil:取大于等于x的最小的整数值,如果x是一个整数,则返回x
2.fabs:返回x的绝对值
3.floor:取小于等于x的最大的整数值,如果x是一个整数,则返回自身
4.pow:返回x的y次方,即x**y
5.sqrt:求x的平方根
# type查看数值类型
a = 10.1
print(type(a))
# 强制转换
print(int(a))
b = 10
print(float(b))
# 除法/
print(20 / 3)
# 整除,不保留小数位 //
print(20 // 3)
# 一个数的多少次方,23的7次方
print(23 ** 7)
# 导入math包
import math
# math常用方法
print(math.ceil(2.3))# 3
print(math.fabs(-12.1))# 12.1
print(math.floor(-2.6))# -3
print(math.pow(98, 29))# 5.566166524310583e+57
print(math.sqrt(9))# 3
三、 进制转换
# 十进制转二进制
n = 189
result = bin(n)
print(result)
# 十进制转八进制
result = oct(n)
print(result)
# 十进制转十六进制
n = 290
result = hex(n)
print(result)
# 前缀:0b 二进制 0o 八进制 0x 十六进制 默认十进制
n = 0x889
result = int(n)
print(result)
已知二进制转换为十进制
983:
已知二进制转换为八进制:将二进制从右侧开始3位一组,最后一组不足3位补0 按111为421计算
0o3467:0b011100110111
0o7654:0b111110101100
0o6321:0b110011010001
已知二进制转换为十六进制:将二进制从右侧开始3位一组,最后一组不足4位补0 按1111为8421计算
0xad92:0b1010110110010010
0xff98:0b1111111110011000
0xbcde:1011110011011110
四、位运算
# 按位与:&——参与运算符的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 print(9 & 3) ''' 1001 0011 0001:结果为1 ''' # 按位或:|——只要对应的两个二进位有一个为1时,结果位就为1 n = 8 print(n | 9) ''' 1000 1001 1001:结果为9 ''' # 按位异或:当两对应的二进位相异时,结果为1 x = 4 print(~4) ''' 原码:0000 0100 取反:1111 1011 1011:结果为-11 ''' # 左移 n = 12 # 00001100 print(n << 1) # 24 12*2 print(n << 2) # 24 12*2*2 print(n << 3) # 24 12*2*2*2 n = 54 print(n << 4) # 54*16 # 右移 n = 12 print(n >> 1) # 6 12//2 ==>6 print(n >> 2) # 6 12//4 ==>3 print(n >> 3) # 6 12//8 ==>1 n = 89 # 右移五位 print(89 >> 5) # 2 89//32 n = 93 # 左移3位 print(93 << 3) # 744 93*2*2*2
已知二进制的负数(判断是否是负的二进制的依据,看二进制的最高位:1111 1010,最高位是1则表为负数,0则为正数 补码为加1,负数二进制转负数10进制减1)
~7:-8
原码:00000111
取反:11111000
~-4:3
原码:0000 0100
取反:11111011
补码:11111100
取反:00000011得出-4取反为3
-9的二进制:
原码:00001001
取反:11110110
补码:11110111
1111 1101的十进制:
减一:11111100
取反:00000011
十进制为-3
五、 运算符优先级
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~、+、- | 按位翻转,一元加号和减号(最后两个的方法名为+@和-@) |
*、/、%、// | 乘、除、取模和取整除 |
+、- | 加法、减法 |
>>、<< | 右移、左移运算符 |
& | 位与 |
^、| | 位运算符 |
<=、<、>、>= | 比较运算符 |
/ <> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in in not | 成员运算符 |
not or and | 逻辑运算符 |
六、 Random随机数常用方法
1.random.random():返回[0.0, 1.0)之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是0但不可能为1
2.random.randint(a, b):生成一个a与b之间的随机整数,也就是[a, b]
3.random.randrange(a, b):生成的随机整数不包含b,即[a, b)
4.random.uniform(a, b):生成[a, b]之间的随机浮点数
5.random.choice([]):从列表中随机取出一个元素
6.random.shuffle([]):打乱列表中元素的顺序
7.random.sample([], n):从列表中随机取出n个元素
# 导入random包
import random
# random.random():返回[0.0, 1.0)之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是0但不可能为1
print(random.random())
# random.randint(a, b):生成一个a与b之间的随机整数,也就是[a, b]
print(random.randint(1, 10000))
# random.randrange(a, b):生成的随机整数不包含b,即[a, b)
print(random.randrange(10, 50))
# random.uniform(a, b):生成[a, b]之间的随机浮点数
print(random.uniform(1, 1000))
# random.choice([]):从列表中随机取出一个元素
print(random.choice([1, 3, 4, 4, 10, 100, 33]))
# random.shuffle([]):打乱列表中元素的顺序
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(a)
print(a)
# random.sample([], n):从列表中随机取出n个元素
print(random.sample([1, 3, 4, 4, 10, 100, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9], 5))
"""
商家优惠节推出活动(用户名、消费总金额、账户金额、优惠券)
1.如果金额0-500元则是LV1级别
2.如果500-2000元则是LV2级别
3.2000以上是LV3级别
优惠政策:
LV1:随机赠送3张1-10元的优惠券
LV2:赠送2张50元优惠券,如果充值则送充值金额的10%
LV3:赠送2张100元优惠券,如果充值则送15%的金额
"""
import random
print('请输入用户名:')
username = input()
print('请输入消费总金额:')
total = int(input()) # 消费总金额
money = 0 # 账户金额
coupon = [] # 优惠券
# 判断用户等级
# 1.如果金额0-500元则是LV1级别
if 0 < total < 500:
print('恭喜您成为LV1用户')
# LV1:随机赠送3张1-10元的优惠券
coupons1 = random.randint(1, 10)
coupons2 = random.randint(1, 10)
coupons3 = random.randint(1, 10)
coupon.append(coupons1)
coupon.append(coupons2)
coupon.append(coupons3)
print('赠送您三张优惠券金额分别为:', coupon)
# 2.如果500-2000元则是LV2级别
elif 500 <= total < 2000:
print('恭喜您成为LV2用户')
coupons4 = 50
# LV2:赠送2张50元优惠券
coupon.append(coupons4)
coupon.append(coupons4)
print('赠送您两张50元优惠券:', coupon)
# 如果充值则送充值金额的10%
opt = input("现在充值赠送10%的金额,是否进行充值(y/n):")
if opt == 'y':
moneys = int(input('请输入充值金额:'))
money = 1.1 * moneys
gift = moneys * 0.10
print('赠送金额为:', gift)
print('账户总金额为:', money)
# 3.2000以上是LV3级别
else:
print('恭喜您成为LV3用户')
# LV3:赠送2张100元优惠券
coupons5 = 100
coupon.append(coupons5)
coupon.append(coupons5)
print('赠送您两张100元优惠券:', coupon)
# 如果充值则送15 % 的金额
opt = input("现在充值赠送10%的金额,是否进行充值(y/n):")
if opt == 'y':
moneys = int(input('请输入充值金额:'))
money = 1.15 * moneys
gift = moneys * 0.15
print('赠送金额为:', gift)
print('账户总金额为:', money)