
print(bin(4)) # 0b100
print(bin(5)) # 0b101
print(bin(~4), ~4) # -0b101 -5 (~ 按位非/反)
print(bin(4 & 5), 4 & 5) # 0b100 4 (& 按位与)
print(bin(4 | 5), 4 | 5) # 0b101 5 (| 按位或)
print(bin(4 ^ 5), 4 ^ 5) # 0b1 1 (^ 按位异或)
print(bin(4 << 2), 4 << 2) # 0b10000 16 (左移)
print(bin(4 >> 2), 4 >> 2) # 0b1 1 (右移)
二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
- Python中
bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号,巨坑。 - Python中的整型是补码形式存储的。
- Python中整型是不限制长度的不会超范围溢出。
所以为了获得负数(十进制表示)的补码,需要手动将其和十六进制数0xffffffff进行按位与 *** 作,再交给bin()进行输出,得到的才是负数的补码表示。
#其他运算符注意点:
- is, is not 对比的是两个变量的内存地址。
- ==, != 对比的是两个变量的值。
- 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
- 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
- 注意运算符优先级。
#保留float有效数字
import decimal
from decimal import Decimal
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 使 1/3 保留 4 位,用 getcontext().prec 来调整精度,输出0.3333。
除了直接给变量赋值 True(1)和 False(0),还可以用 bool(X) 来创建变量,其中 X 可以是
- 基本类型:整型、浮点型、布尔型 [
bool作用在基本类型变量:X只要不是整型0、浮点型0.0,bool(X)就是True,其余就是False] - 容器类型:字符串、元组、列表、字典和集合 [
bool作用在容器类型变量:X只要不是空的变量,bool(X)就是True,其余就是False]
#类型判断
print(isinstance(1, int)) # True
print(isinstance(5.2, float)) # True
print(isinstance(True, bool)) # True
print(isinstance('5.2', str)) # True
'''
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。'''
#类型转换
- 转换为整型
int(x, base=10) - 转换为字符串
str(object='') - 转换为浮点型
float(x)
#range和arange区别
range返回从0-4的五个数构成的list(常用于for循环),而arange需要先引入numpy包且返回一个array对象(常用于创建等差数组),不过他们之间的元素是一样的。
range(5) #[0,1,2,3,4]
import numpy as np
np.arange(5)
#Array([0,1,2,3,4])
#enumerate()与 for 循环的结合使用
用 enumerate(A) 不仅返回了 A 中的元素,还顺便给该元素一个索引值 (默认从 0 开始)。此外,用 enumerate(A, j) 还可以确定索引起始值为 j。
#enumerate(sequence, [start=0])其中start表示下标起始位置。
languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
print('I love', language)
print('Done!')
# I love Python
# I love R
# I love Matlab
# I love C++
# Done!
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!
#break语句可以跳出当前所在层的循环
#continue终止本轮循环并开始下一轮循环
import random
secret = random.randint(1, 10) #[1,10]之间的随机数
while True:
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp)
if guess > secret:
print("大了,大了")
else:
if guess == secret:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
break
else:
print("小了,小了")
print("游戏结束,不玩儿啦!")
#不被2整除时,直接print;被2整除时,加2后print。
for i in range(10):
if i % 2 != 0: #取余不等于0
print(i)
continue
i += 2
print(i)
#推导式&异常处理
基础练习补充 容器数据类型- 列表
- 元组
- 字典
- 集合
- 字符串
a = [x for x in range(10)]
print(list(a)) #得到列表--> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a = (x for x in range(10))
print(a) # at 0x0000025BE511CC48>
print(tuple(a)) #得到元组--> (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#容器区别列表
练习错题- 问答题
1、输入number=2426.666,则print('%6.2f'%number)输出结果为?(2426.67)
#6.2f表示在输出一个小于2位的数值时,将在前面补充6使其总宽度为2位。f为浮点数。%f默认为四舍五入。变量number输出长度为2的浮点数,如果前面不够2位用6补充。
2、输入number=242666,则print('%06x'%number)输出结果为?(03b3ea)
# %x是十六进制,至少保留6位,不足用0填充。
3、输入tuple1=(2,4,6,8); tuple1[0]=2, 输出结果为?(TypeError)
#tuple里数据不允许修改,tuple1[0]=2表示将2再次赋值给元组中第0个数,即报错。如果想修改,a=tuple[x]后可以修改a,在需要用到tuple[x]时用a替代。
4、输入dict1={'Bob':'男','Alice':'女'}, dict1.get('Alice'), 输出结果为?('女')
#get()方法可以返回指定键的值,如果该键不存在的话,返回默认值。
5、str1='a01bcdefg', print(str1.upper().title())输出结果为?(A01Bcdefg)
#最终输出即字符串首字母大写,后面title()覆盖upper()这一项。
6、print('\n'.join(['a','b','c'])), 输出结果为?
a
b
c
#join是联合函数,将()内按指定字符连接。\n是换行符号。
7、id()为查询内存地址函数。所有的数据元素在电脑的内存地址都是不同的。
8、lst1=[1,2,3], lst.insert(2,[4,5,6]) #即在索引2 的位置后面插入列表[4,5,6],得到[1,2,[4,5,6],3]
- *** 作题
1、运用Python根据分数划分等级。
成绩>=90分的同学用A表示,60-89分的同学用B表示,60份以下的同学用C表示。示例运行结果:请输入学生分数:97.5,该同学分数等级为A。
score=97.5
if score>=90:
print('请输入学生分数:%s'%(score)) #单引号内是字符串,%s表示将%(score)赋给%s,固定用法。
print('该同学分数等级为A')
elif score<90&score>=60:
print('请输入学生分数:%s'%(score))
print('该同学分数等级为B')
else:
print('请输入学生分数:%s'%(score))
print('该同学分数等级为C')
score=int(input('请输入学生分数:'))
s=''
if (score>=90):
s='A'
elif (score>=60):
s='B'
else:
s='C'
print('该学生成绩为%s'%(s))
#print了一个格式化字符串(%s),把s变量的内容替换到%s处。
#input()函数接受一个标准输入数据,返回为string类型。
input('请输入学生分数:')
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)