題目描述
某人有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_多出的元素
輸出:
<class 'list'> <class 'list'>
{1, 2, 3, 4, 5} <class 'set'> {1, 2, 3, 6, 7} <class 'set'>
{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