我正在为一个直播滚动编写一段代码。我正在努力在文本文件中取价并将其乘以用户输入的数量。我不确定如何解决。
这是我到目前为止所做的事情;
部分代码,
def receipt():
food = input("Enter the product code for the item you want.")
fi = open("data.txt","r")
info = fi.readlines()
fi.close()
item = False
for li in info:
if(li.split(":")[0].lower() == food):
print(li.split(":")[1])
item = True
quantity = input("How many do you want?")
print("£" + quantity)
receipt()
文本文件:
12345670:Burgers, £1:1.30
19203123:Cheese, £2.50:2.50
98981236:Crisps, 0.55p:0.55
56756777:Alphabetti Spaghetti, £1.45:1.45
90673412:Sausages, £2.30:2.30
84734952:Lemonade, 0.99p:0.99
18979832:Ice Cream, £1.50:1.50
45353456:6 Pack of Beer, £5:5.00
98374500:Gum, 0.35p:0.35
85739011:Apples, 0.70p:0.70
我想我必须使用.append或列表,但我不知道它们是如何工作的,因为我还没有学过它们。
答案 0 :(得分:0)
您只需要从文件中的行中提取价格并将其转换为浮点数:
price = float(li.split(":")[2])
会给出给定行上项目的价格。这会将行尾的价格转换为浮点数或十进制数,然后您可以随意使用它。
答案 1 :(得分:0)
要获得总价,您需要获取用户输入的数量并将其转换为整数(浮点数确实没有意义)。您可以使用li.rsplit(':',1)[-1]
获得价格。不要忘记把它转换成漂浮物。
演示:
>>> quantity = int(input('how many do you want? ')) # make int out of input string
how many do you want? 10
>>> li = '90673412:Sausages, £2.30:2.30' # example line
>>> quantity * float(li.rsplit(':', 1)[-1])
23.0
这应该让你开始。
答案 2 :(得分:0)
我建议更新for循环,将线条分成各自的部分,然后根据需要操作部分id.lower()
和float(price)
for li in info:
id,desc,price = li.split(':')
if id.lower() == food:
item = True
quantity = int(input("How many do you want? "))
print("£" + str(quantity*float(price)))
答案 3 :(得分:0)
@ Wolf:请尝试以下代码,它应该可以工作。自从中检索数据 txt文件是ASCII格式,if条件似乎失败。
import chardet
def receipt():
food = input("Enter the product code for the item you want.")
fi = open("data.txt","r")
info = fi.readlines()
fi.close()
item = False
for li in info:
a = li.split(":")[0].lower()
encoding = chardet.detect(a)
#print encoding
#int(a)
#print int(a)
if int(a) == food:
#print "pass"
print(li.split(":")[1])
#print item
item = True
quantity = input("How many do you want?")
print( quantity)
receipt()