好的,我自己做了挑战,所以我可以做一些编程。
但是我遇到了一些问题。
adtprice = {19.99 , 49.99}
chldprice = adtprice * (3/4) - 7.5
这是错误我得到的结果。
Traceback (most recent call last):
File "C:/Users/Owner/Desktop/Programming Scripts/park.py", line 2, in <module>
chldprice = adtprice * (3/4) - 7.5
TypeError: unsupported operand type(s) for *: 'set' and 'float'
我希望它简单易用,因为我会经常使用adtprice和chldprice。
答案 0 :(得分:4)
adtprice = [19.99 , 49.99]
chldprice = [a * (3.0/4) - 7.5 for a in adtprice]
答案 1 :(得分:2)
这可能是您正在寻找的。首先,一个集合不能乘以数字,你可以使用列表理解而3/4
只返回0
(假设Python 2.x)。我假设你想要3.0/4
。
>>> adtprice = [19.99 , 49.99]
>>> chldprice = [price*(3.0/4) - 7.5 for price in adtprice]
>>> chldprice
[7.4925, 29.9925]
答案 2 :(得分:1)
我认为您想要的是计算每个成人价格的子价格。你没有列表,只有一个集合,所以这应该有帮助:
adult_prices = [19.99, 49.99]
child_prices = []
for price in adult_prices:
child_price = price * (3.0/4.0) - 7.5
child_prices.append(child_price) # Add each child price to the array
print("For adult price {}, child price is {}".format(price, child_price))
print(adult_prices)
print(child_prices)
答案 3 :(得分:1)
首先,你有一个集合,而不是一个列表。使用方括号创建列表而不是花括号。
正如其他人所提到的,你需要对列表中的各个元素进行操作。
您可以使用列表推导
来完成此操作adtprice = [19.99, 49.99]
chldprice = [p * (3./4) - 7.5
for p in adtprice]
或使用map
,如果您愿意:
adtprice = [19.99, 49.99]
chldprice = map(lambda p: p * (3./4) - 7.5,
adtprice)
如果您发现自己想要对序列执行这些类型的批量操作,请考虑使用numpy。它是一组库,可以简洁有效的方式有效地处理矩阵和矢量数学。例如:
adtprice = numpy.array([19.99, 49.99])
chldprice = adtprice * (3./4) - 7.5
答案 4 :(得分:1)
虽然其他答案可行,但如果您想对值序列实际进行数学运算,我建议使用the numpy
library。它确实非常出色。以下是使用numpy数组的代码:
import numpy as np
adult_prices = np.asarray([19.99, 49.99])
child_prices = adult_prices * (3.0/4) - 7.5 # math operations work item by item
print(child_prices) # prints "array([ 7.4925, 29.9925])"
你可以用类似的方式做更多事情。例如,如果您只想在小数位后面两位数,则可以舍入结果:
child_prices = np.round(adult_prices * (3.0/4) - 7.5, 2)
print(child_prices) # prints "array([ 7.49, 29.99])"