努力将数字乘以文本文件(Python)

时间:2016-02-11 20:41:03

标签: python python-3.x

我正在为一个直播滚动编写一段代码。我正在努力在文本文件中取价并将其乘以用户输入的数量。我不确定如何解决。

这是我到目前为止所做的事情;

部分代码,

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或列表,但我不知道它们是如何工作的,因为我还没有学过它们。

4 个答案:

答案 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()