Python简单题练习

'''
    不使用中间变量交换a和b
'''

# 使用交叉赋值的方式
a = 1
b = 2
a,b = b,a
print(a,b)
# 输出:2 1

summary:可用交叉赋值,不使用中间变量交换数值

'''
    根据以下代码,思考程序运行的结果
'''
# 1
l1 = []
for i in range(3):
    # 0 1 2
    l1.append({'num':i})
print(l1) #列表中添加字典
#2
l2 = []
a = {'num':0} #初始化值
for i in range(3):
    # 字典是可变类型,对可变类型的字典进行修改
    # 不仅改变了字典a,它把列表中的a也改了
    a['num'] = i
    l2.append(a)
print(l2)

# [{'num': 0}, {'num': 1}, {'num': 2}]
# [{'num': 2}, {'num': 2}, {'num': 2}]

summary:字典类型为可变值,且可能更改列表中的值,每次循环的赋值被更新为终值

'''
    求两个集合的交集、并集和差集,并说明结果的原因
'''
set1 = {2,2.2,True,4+3j}
set2 = {1,2.2,False,4+3j}

print(set1 & set2)
# 输出:{1, 2.2, (4+3j)}
# 解释:这里交集有一个1,是因为set1中布尔类型True为1,set2中包含数值1。
# set1去找set2里面是否有相同元素,找到set2中的1,发现set1里面没有1,自动把True转为1

print(set2 & set1)
# 输出:{True, 2.2, (4+3j)}
# 解释:与上例的区别在于,谁求谁的交集.依赖于后者的值优先输出(第二个为优先级)
# set2去找set1,以set1中的为标准,输出为True

print(set1 | set2)
# {False, True, 2, 2.2, (4+3j)}
# 先找1中的元素,再在2中找不同的
# 所以它认为1和True是一样的,1就当成True相同元素看待不会展示
# 第一个集合为优先级

print(set2 | set1)
#{False, 1, 2.2, 2, (4+3j)}

print(set1 - set2)
# {2}
# 差集:set1 - set1和set2的交集

print(set2 - set1)
# {False}

summary:

交集:布尔类型和数值0、1的输出与集合优先级有关,以后者为依赖,优先输出第二个集合的元素值形式

并集:以第一个集合为优先级输出

差集:第一个集合 - 两集合的交集

'''
    res1 = 3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3>3结果是什么
'''
res1 = 3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3>3
# false and True or false and True or false
print(res1)
# False
'''
    打印0~10之间的奇数
'''
for i in range(10+1):
    if i%2 == 1:
        print('我是奇数%s'%i)
'''
    定义一个函数,计算1~990的和,用for循环完成
'''
def Sum(n):
    sum = 0
    for i in range(n): # 或者可以range(n+1),从0开始加到990
        i += 1
        sum += i
    print(sum)
n = 990
Sum(n) # 490545
'''

salaries = {
    'aaa':30000000,
    'bbb':1000000000,
    'ccc':2000
}
求薪资最高的人的人名

'''

salaries = {
    'aaa':30000000,
    'bbb':1000000000,
    'ccc':2000
}
# 该题应该比较的是value值,结果取key
# 但字典默认比较的是key,以下结果为ccc
# res = max(salaries)
# print(res)

# 采用函数解决
# 有名函数
def func(name):
    return salaries[name]
print(func('bbb'))
# 改变它的比较逻辑
res = max(salaries,key=func)
print(res)

#以后没有这个函数的需求,可以用匿名函数
print(max(salaries,key=lambda name:salaries[name]))

扫描二维码关注公众号,回复: 15284091 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_56264090/article/details/131080353