Python 运算符、内置函数、序列、集合用法 例题
实验2 Python 运算符、内置函数、序列用法
一、 实验目的
(1) 熟悉运用Python运算符
(2) 熟练运用Python内置函数
(3) 养成对用户输入立即进行类型转换的习惯
(4) 了解lambda表达式作为函数参数的用法
(5) 了解列表、元组、字典、集合的概念和基本用法
(6) 了解Python函数式编程模式
二、 实验内容
(1) 编写程序,输入任意大的自然数,输出各位数字之和。
alist = input().split()
sum = 0
for i in alist:
sum += int(i)
print(sum)
1 2 3 4
10
(2) 编写程序,输入两个集合setA和setB,分别输出它们的交集、并集和差集。
setA = input("setA:").split()
setB = input("setB:").split()
setA = set(setA) #列表转集合
setB = set(setB)
setC = setA.difference(setB)
print("交集为:{}".format(setA & setB))
print("并集为:{}".format(setA | setB))
print("差集为:{}".format(setC))
setA:1 2 3
setB:1 2 4
交集为:{'2', '1'}
并集为:{'3', '2', '4', '1'}
差集为:{'3'}
(3) 编写程序,输入一个自然数,输出它的二进制、八进制、十六进制表示形式。
num = int(input("请输入一个数:"))
numbin = bin(num)
print("{}的二进制结果为:{}".format(num,numbin ))
print("{}的八进制结果为:{}".format(num, "%o" %num))
print("{}的十六进制结果为:{}".format(num, "%x" %num))
请输入一个数:12
12的二进制结果为:0b1100
12的八进制结果为:14
12的十六进制结果为:c
(4) 编写程序,输入要给包含若干整数的列表,输出一个新列表,要求新列表中之包含原列表中的偶数。
list4 = input().split()
list4b = []
for i in list4:
if int(i) % 2 == 0:
list4b.append(i)
print(list4b)
1 2 3 4 5 6
['2', '4', '6']
(5) 编写程序,输入两个分别包含若干整数的列表lstA和lstB,输出一个字典,要求使用列表lstA的元素作为键,列表lstB中的元素作为值,并且最终字典中的元素数量取决于两个列表中元素最少的列表的数量
lstA = input().split()
lstB = input().split()
dictionary = dict(zip(lstA, lstB))
print(dictionary)
key1 key2 key3
value1 value2
{'key1': 'value1', 'key2': 'value2'}
(6) 编写程序,输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列
listA = input().split()
listB = listA[:]
listB.sort(reverse=True)#降序
print(listB)
1 2 3 4
['4', '3', '2', '1']
(7) 编写程序,输入要给包含若干整数的列表,输出列表中所有整数连乘的结果。
list7 = input().split()
mul = 1
for i in list7:
mul *= int(i)
print(mul)
1 2 3 4
24
(8) 编写程序,输入两个各包含2个整数的列表,分别表示城市中两个地点的坐标,输出两点之间的曼哈顿距离。
x = input().split()
y = input().split()
# lambda输入x,输出int(x)
x = list(map(lambda i: int(i), x))
y = list(map(lambda i: int(i), y))
# 根据公式求解曼哈顿距离
d = abs(x[0] - y[0]) + abs(x[1] - y[1])
print(d)
1 2
3 4
4
(9) 编写程序,输入包含若干集合的列表,输出这些集合的并集。要求使用reduce()函数和lanbda表达式。
from functools import reduce
list9 = eval(input('请输入包含若干集合的列表:'))
print(len(list9))
listtmp = set()
for i in range(0,len(list9)):
print(list9[i:i+2])
#将并集运算的结果返回列表中可参与下次并集运算的集合中
list9[i+1] = reduce(lambda x, y: x | y, list9[i:i+2])
print(unionset9)
请输入包含若干集合的列表:[{1,2,4},{1,2,3},{1,2,5},{1,2,6}]
4
[{1, 2, 4}, {1, 2, 3}]
[{1, 2, 3, 4}, {1, 2, 5}]
[{1, 2, 3, 4, 5}, {1, 2, 6}]
[{1, 2, 3, 4, 5, 6}]
(10) 编写程序,输入等比数列的首项,公比(不等于1且小于36的正整数)和一个自然数n,输出这个等比数列的前n项的和。关键步骤要求使用内置函数int()。
import math
a1=input("请输入首项:")
q=input("请输入公比(不等于1且小于36的正整数):")
n=input("自然数n:")
suma = int(int(a1)*(1-int(q)**int(n))/(1-int(q)))
print("等比数列的前n项的和:{}".format(suma))
请输入首项:2
请输入公比(不等于1且小于36的正整数):2
自然数n:2
等比数列的前n项的和:6
(11) 编写程序,输入一个字符串,输出其中出现次数最多的字符及其出现的次数,要求使用字典完成。
str11=input('请输入一个字符串:')
d=dict()
i=0
while i<len(str11):
if str11[i] in d:
d[str11[i]]+ = 1
else:
d[str11[i]] = 1
i = i + 1
sums = max(d.values())
print('出现的最多次的字符是:')
for key,value in d.items():
if(value == sums):
print(key)
print()
print('出现的最多次的字符是:')
print(sums)
请输入一个字符串:abbccddd
出现的最多次的字符是:
d
出现的最多次的字符是:
3