题目描述
某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?
输入描述:
无
输出描述:
输出一行,表示题目所求。
本人解答:
a = [8, 10, 18]
b = [5, 4, 6]
all = []
for i in range(b[0] + 1):
for j in range(b[1] + 1):
for z in range(b[2] + 1):
all.append(a[0] * i + a[1] * j + a[2] * z)
all_ = []
for x in all:
if x not in all_:
all_.append(x)
print(len(all_) - 1)
运行结果:
优质解答:
L = []
for i in range(6):
for j in range(5):
for k in range(7):
L.append(i * 8 + j * 10 + k * 18)
print(len(set(L)) - 1)
set()函数:
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,结合“&”、“|”、“-”还可以计算求并集、交集、差集等。
例如:
m = [1, 2, 3, 4, 5, 1, 2]
n = [1, 2, 3, 6, 7, 6, 7]
print(type(m), type(n))
m_ = set(m)
n_ = set(n)
print(m_, type(m_), n_, type(n_)) # 集合中的数据不重复,可以用来数据去重
print(m_ & n_) # 求交集
print(m_ | n_) # 求并集
print(m_ ^ n_) # 求差集,两个集合除了并集以外的元素
print(m_ - n_) # 求m_集合比n_多出的元素
print(n_ - m_) # 求n_集合比m_多出的元素
输出:
{1, 2, 3, 4, 5}
{1, 2, 3, 6, 7}
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7}
{4, 5, 6, 7}
{4, 5}
{6, 7}
# 列表(list)、元组(tuple)、集(set)、数组(array)的相互转换: https://blog.csdn.net/Darren1921/article/details/93731483