【Python基础练习笔记】

【Python基础练习笔记】,第1张

基础入门补充 位运算
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.0bool(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('请输入学生分数:')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/883402.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-14
下一篇2022-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存