每当我尝试将字符串“ discount1”转换为程序中的“ actualDiscount”时,都会出现语法错误。假设您在程序中输入了“ 30 | .15 | 0-Clothes”:
product1 = raw_input("Enter the information for the first product>")
space1 = product1.find("|")
space2 = product1.rfind("|")
price1=product1[0:space1]
discount1=product1[space1+1:space2]
category1 = product1[space2+1:len(product1)]
actualPrice = int(price1)
actualDiscount = int(discount1)
printNow("Price is " + int(actualPrice))
printNow("Discount is " + int(actualDiscount) + " percent.")
有时,根据我输入的内容,它可以一直运行到printNows。在其他时候,它甚至无法做到那么远。
最重要的是,我必须对这些整数进行数学运算-从价格中减去价格乘以折扣百分比。至少我有点不知所措,我们将不胜感激。
答案 0 :(得分:1)
首先,使用split data = product1.split( "|" )
第二,“。15”不是int
。使用float()
进行转换。
答案 1 :(得分:1)
我将注释您的代码,并尝试解释您可以做的错误或修改。
product1 = raw_input("Enter the information for the first product>")
# Instead of find/rfind, you can split by '|'
替换此:
space1 = product1.find("|")
space2 = product1.rfind("|")
price1=product1[0:space1]
discount1=product1[space1+1:space2]
category1 = product1[space2+1:len(product1)]
由此:
# You get a list: ['30', '.15', '0-Clothes']
data = product1.split("|")
之后,您必须应用数据转换:
# Price is an integer
actualPrice = int(data[0])
# Discount is a float
actualDiscount = float(data[1)]
# Category
category = data[2]
然后,打印结果:
print("Price is " + int(actualPrice))
print("Discount is " + int(actualDiscount) + " percent.")
我认为您想推广该代码以处理多个项目“ a | b | c”。您可以使用列表理解来简化代码,如下所示:
# Data input
product1 = raw_input("Enter the information for the first product>")
# Data
data = [ [int(price),float(discount),category] for price, count, category in [product1.split("|")]]
for actualPrice, actualDiscount, category in data:
print("Price is " + str(actualPrice))
print("Discount is " + str(actualDiscount) + " percent.")
print("Final price is " + str(actualPrice - actualPrice * actualDiscoun$
这是理解列表的工作方式:
list_name = [ elements_you_want_to_get for list_element(s) in another_list ]
创建一个遍历another_list
的列表,并使用list_element(s)
选择获取它的元素,该选择允许为我们的自定义名称分配值。然后,您可以在elements_you_want_to_get
中对数据进行转换。
每个元素的解释:
[product1.split("|")]
:创建包含拆分数据的列表。我们用括号将拆分结果括起来,以创建类型[[item1,item2,item3]]的列表,以创建具有由3个子元素组成的元素的结构。对于该示例,现在我们有:[[''30','.15','0-衣服']]
请注意,这个包含3个子元素的列表是我向您展示的列表理解的another_list
元素。
for price, count, category
:对于another_list
的每个元素,循环获取每个元素(在我们的情况下仅为['30', '.15', '0-Clothes']
),并将其子元素命名为价格,折扣和类别。目前,我们有price='30'
,discount='.15'
和category='0-Clothes'
。
最后一步,理解将应用转换。在我们的例子中,我们想将price
转换为整数,将discount
转换为浮点数(为避免不兼容,更改应全部转换为浮点数)。
理解后,结果为:
[[price_1,折扣_1,类别_1],[price_2,折扣_2,类别_2],...]
在我们的例子中,我们只有一个元素,结果将是:
`data = [....]
[[[30,0.15,'0-Clothes]]
请注意,结果列表包含两个数字元素和一个字符串元素(用引号引起来)。