练习题 - Python基本数据类型

Python基本数据类型

1.说一下基本数据类型有哪些

整型(int)

作用:
	记录年龄、身份证号、个数等等
	
定义:
	age = 18

浮点型(float)

作用:
	记录薪资、身高、体重
	
定义:
    salary = 3.3
    height = 1.87
    weight = 70.3

字符串类型(str)

作用:
	记录描述性质的状态,名字、一段话

定义:
    用引号('',"",''' ''',""" """,)包含的一串字符
    如:name = 'xxq'

列表(list)

作用:
    按位置记录多个值(同一个人的多个爱好、同一个班级的所有学校姓名、同一个人12个月的薪资)
    并且可以按照索引取指定位置的值

定义:
    在[]内用逗号分隔开多个任意类型的值,一个值称之为一个元素
    如:list1 = [1,2,3,4,'5','六']

注意点:
	索引对应值,索引从0开始,0代表第一个

字典(dic)

作用:
	用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能
	
定义:
    在{}内用逗号分开各多个 key:value
    如:info={"name":'xxq',"age":18, "gender":'male'}

布尔类型(bool)

作用:
    	用来记录真假这两种状态
    定义:
        is_ok = True
        is_ok = False
    其他使用:
    	通常用来当作判断的条件,我们将在if判断中用到它

元组类型(tuple)

作用:
	按照索引/位置存放多个值,只用于读,不用于改

定义:
	t = (1,1.3,'aaa')

注意点:
    1.单独一个括号,代表包含的意思
    	x = (10)
    2.如果元组中只有一个元素,必须加逗号
    	x = (10,)
    3.元组不能改,指的是不能改里面的内存地址
        t = (1,[11,22])
        print(t,id(t[0]),id(t[1]))
        t[1][0] = 33		# 元组内的列表的元素还是可以改的
        print(t,id(t[0]),id(t[1]))

        (1, [11, 22]) 2038884272 59297864
        (1, [33, 22]) 2038884272 59297864

集合类型(set)

作用:
	关系运算、去重
	
定义:
    在 {} 内通逗号隔开多个元素,多个元素满足以下条件:
        1.集合内的元素必须为不可变类型
        2.集合内的元素无序
        3.集合内的元素没有重复

2.说一下交互

什么是交互?

交互就是人和计算机互动,人输入信息,计算机获取后,输出信息给人,循环往复的这个过程,就是交互。

为什么要交互?

为了让计算机可以和人一样沟通,要操控计算机就是通过这种可以交互的性质。

怎么交互?

输入 和 输出

3.说一下运算符

算数运算符

包括:+、-、*、/、//、%、**

    # print(10 + 3.1)
    # print(10 + 3)
    # print(10 / 3)  # 结果带小数
    # print(10 // 3)  # 只保留整数部分
    # print(10 % 3) # 取模、取余数
    # print(10 ** 3) # 取模、取余数

比较运算符

包括:>、>=、<、<=、==、!=

    # print(10 > 3)
    # print(10 == 10)
    #
    # print(10 >= 10)
    # print(10 >= 3)

    # name=input('your name: ')
    # print(name == 'egon')

赋值运算符

1.变量的赋值:=

2.增量赋值
    # age = 18
    # # age += 1  # age=age + 1
    # # print(age)
    #
    # age*=3
    # age/=3
    # age%=3
    # age**=3 # age=age**3
    
3.链式赋值
    # x=10
    # y=x
    # z=y
    # z = y = x = 10 # 链式赋值
    # print(x, y, z)
    # print(id(x), id(y), id(z))

4.交叉赋值
    m=10
    n=20
    # print(m,n)
    # 交换值
    # temp=m
    # m=n
    # n=temp
    # print(m,n)

    # m,n=n,m # 交叉赋值
    # print(m,n)
    
5.解压赋值
    # 把五个月的工资取出来分别赋值给不同的变量名
        # mon0=salaries[0]
        # mon1=salaries[1]
        # mon2=salaries[2]
        # mon3=salaries[3]
        # mon4=salaries[4]

    # 解压赋值
        # mon0,mon1,mon2,mon3,mon4=salaries
        # print(mon0)
        # print(mon1)
        # print(mon2)
        # print(mon3)
        # print(mon4)

        # mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行
        # mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行

4.可变不可变类型的区别

可变类型:
	值改变,id不变,证明改的是原值,证明原值是可以被改变的
	
不可变类型:
	值改变,id也改变了,证明是产生新的值,压根没有改变原值,证明原值是不可改变的

5.基本数据类型 总结

按照存值个数区分

只能存一个值(可称为标量/量子类型):	数字、字符串
可以存放多个值(可称为容器类型):	列表、元组、字典

按照访问方式区分

只能存一个值(可称为标量/量子类型):	数字
可以存放多个值(可以用索引访问指定的值,又称为序列类型):	字符串、列表、元组
key访问(可以用key访问指定的值,又称为映射类型):	字典

按照可变不可变区分

可变类型:	列表、字典
不可变类型:	数字、字符串、元组

6.简单描述定义一个变量x=10,在内存的栈区和堆区的存放情况

栈区 存放变量名 x
堆区 存放变量值 10

7.简述一下 直接引用 和 间接引用

直接引用:
	直接把值传给变量名,如:
	x = 10
	print(x)

间接引用:
	把值传给一个变量后,间接把值传给另一个变量
	x = 10
	y = x
	print(y)

8.接收用户输入的:用户名、年龄、性别,然后选取最优格式化字符串的方式,按照如下格式输出:

我的名字是:XXX

我的年龄是:XXX

我的性别是:XXX

name = input('请输入姓名:')
age = input('请输入年龄:')
gender = input('请输入性别:')
info = '''
我的名字是:{name} 
我的年龄是:{age} 
我的性别是:{gender}
'''.format(name=name, age=age, gender=gender)
print(info)

9.用算数运算符演示:取模运算、增量运算、交叉赋值、链式赋值、解压赋值

# 取模(取余数)运算:
print(10 % 3)

# 增量运算:
x = 10
x += 1
print(x)

# 交叉赋值:
a = 1
b = 2
a, b = b, a
print(a, b)

# 链式赋值:
x = y = z = 1
print(x, y, z)

# 解压赋值:
s = [1, 2, 3]
m1, m2, m3 = s
print(m1, m2, m3)

10.写一段用户登录的代码:

要求:

1.用户输错3次,退出程序,并提示输错次数过多
2.用户输入正确,则进入子程序,开始循环执行命令
3.在循环内,用户输入退出命令,则退出所有循环

username = 'xxq'
password = '123'
count = 0
while count < 3:
    inp_username = input('请输入账号:')
    inp_password = input('请输入密码:')
    if username == inp_username and password == inp_password:
        print('登录成功!')
        while True:
            inp_cmd = input('请输入指令:(按‘q’退出程序)')
            if inp_cmd == 'q':
                print('接收到退出指令,程序退出!')
                break
            else:
                print('指令', inp_cmd, '正在执行,按‘q’退出程序')
        break
    else:
        print('账号或面错误,请重试!')
        count += 1
else:
    print('输错3次了,自动退出程序!')

11.集合内元素的3个特征

1.集合内的元素 必须为 不可变类型(数字、字符串、元组)

2.集合内的元素 无序

3.集合内的元素 没有重读

12.集合的用途是什么?

去重(如:列表去重)

关系测试(如:取交集、取并集、取差集等)

13.举例说明关系运算(交集、并集、差集、对称差集、父子集)

① 取出交集:两者共同的好友( & / .intersection() )

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
res = friends1 & friends2
res = friends1.intersection(friends2)
print(res)

{'egon', 'jason'}

② 取出并集/交集:两者所有的好友( | / .union() )

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
res = friends1 | friends2
res = friends1.union(friends2)
print(res)

{'egon', 'kevin', 'ricky', 'Jy', 'zero', 'jason'}

③ 取出差集:取出其中一个集合独有的好友( - / .difference() )

取出 friends1 独有的好友:

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
res = friends1 - friends2
res = friends1.difference(friends2)
print(res)

{'kevin', 'zero'}

取出 friends2 独有的好友:

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
res = friends2 - friends1
res = friends1.symmetric_difference(friends2)
print(res)

{'ricky', 'Jy'}

④ 对称差集:求2个用户独有的好友们(即:去掉共同的好友)( ^ )

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
res = friends2 ^ friends1
print(res)

{'kevin', 'Jy', 'ricky', 'zero'}

⑤ 父子集:包含的关系( < / = / > / .issubset() )

s1 = {1,2,3}
s2 = {1,2,4}
				# 不存在包含关系,下面比较均为False
print(s1.issupersets2())
print(s1 > s2)
print(s1 < s2)
s1 = {1,2,3}
s2 = {1,2}
print(s1.issubset(s2))
print(s1 > s2)		# 当s1大于或等于s2时,才能说s1是s2的爹
s1={1,2,3}
s2={1,2,3}
print(s1 == s2) # s1与s2互为父子

14.基于集合对列表去重l1 = [1, 1, 1, 1, 1, 1, 2, 3, 3, 'a']

l1 = [1, 1, 1, 1, 1, 1, 2, 3, 3, 'a']
print(set(l1))

15.简述一下集合去重的局限性

1.只能针对不可变类型去重

2.无法保证原来的顺序
posted @ 2020-07-07 21:11  轻描丨淡写  阅读(756)  评论(0编辑  收藏  举报