hanish
hanish

Reputation: 11

converting float to sum in python

fname = input("Enter file name: ")

count=0

fh = open(fname)

for line in fh:

    if not line.startswith("X-DSPAM-Confidence:") : continue

    count=count+1

    halo=line.find("0")

    gh=line[halo:]

    tg=gh.rstrip()

    ha=float(tg)
    total=0
    for value in range(ha):
        total=total+value
        print total

its like a list of decimal number in file ok

0.1235

0.1236

0.1678

I convert it into float where 'tg' have not an array like a list

ha=float(tg)

total=0

for value in range(ha):

    total=total+value

    print total

error: start must be an integer

I know it's a mistake of using range what should I use instead of range?

Upvotes: 0

Views: 51

Answers (2)

Delimitry
Delimitry

Reputation: 3037

If you want to get a sum of floats, just use the code:

fname = input("Enter file name: ")
count = 0
total = 0
fh = open(fname)
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:"): continue
    count += 1
    halo = line.find("0")
    gh = line[halo:]
    tg = gh.rstrip()
    ha = float(tg)
    total += ha
    print total

Upvotes: 1

DevShark
DevShark

Reputation: 9122

You are passing a float as argument to range, which does not make sense. range returns a list with n elements when n is the only argument of range. For example:

>>> range(3)
[0, 1, 2]

So you can see that range of a float does not make sense.

If I understand your code correctly, I think you want to replace:

for value in range(ha):
    total=total+value

By

total += ha

On a separate note, and trying not to be too pedantic, I am pretty impressed by how many principles of PEP 8 your code violates. You may think it's not a big deal, but if you care, I would suggest you read it (https://www.python.org/dev/peps/pep-0008/)

Upvotes: 0

Related Questions