[Tutor] Recognizing real numbers (bob gailer)

Michael Lewis mjolewis at gmail.com
Thu Feb 23 02:44:40 CET 2012


 > Hi everyone,
>
> I have some code where I import a file to use a module. That module
> that I import
> takes text and a multiplier, checks for any numbers in that text and
> will then multiply those numbers by the given multiplier. The imported
> module is below. I am getting the text from a file that I have which
> starts out as:
>
> .5 lb. butter
> 1.75 Cups Graham Cracker Crumbs
> 2.0 Cups Powder Sugar
> 1.0 Cups Peanut Butter
> 2.0 Cups Semi-sweet Chocolate Chips
>
> It seems that the .isdigit() function that I use doesn't recognize the
> .5 as a number and therefore doesn't multiply it. How can I get my
> code to recognize numbers such as .5, 1.75 as numbers?
>
Wow - the requirements just changed. Up tilll now we were dealing with
multiplying each digit. Now we have to parse out a string that
represents a number with decimal places! I hope that we don't raise the
oven temperature in the process.

Well - this is part of my homework and the first question dealt with only
multiplying each digit. the second part of the homework then asked to write
a file that imported the file from the previous homework portion and
utilized the multiplication function in that file. No oven temperature
changes...I promise.

Is it true that the number to multiply is always at the beginning of a
line? If so that makes the job a lot easier.

It's not true. The number can be anywhere in the text.

> Imported module:
>
> def MultiplyText(text, multiplier):
>     '''Recieve a S & int. For digits in S, multiply by multiplier and
> return updated S.'''
>     return ' '.join(str(float(num) * multiplier) if num.isdigit() else
> num for num in text)
>
> Module doing the importing/opening/reading/creating a new file
>
> import Homework5_1 as multiply
>
> def DoubleDigits(file_name):
>     '''Open file/read file/write new file that doubles all int's in the
>     read file'''
>     try:
>         read_file = open(file_name)
>     except IOError:
>         return 'No such file.'
>     new_file_name = file_name + '2'
>     try:
>         write_file = open(new_file_name, 'w')
>     except IOError:
>         read_file.close()
>         return 'No such file to write to.'
>     for line in read_file:
>         new_line = line.split()
>         new_line = ''.join(multiply.MultiplyText(new_line, 2))
>         write_file.write(new_line + '\n')
>     read_file.close()
>     write_file.close()
>
> def main():
>     DoubleDigits(raw_input('What file do you want to open? '))
>
>
> if '__name__' == '__main__':
>     print main()
>
> Output that is written to my file:
>
> Peanut Butter Bars
>
> Ingredients
>
> .5 lb. butter
> 1.75 Cups Graham Cracker Crumbs
> 4.0 Cups Powder Sugar
> 2.0 Cups Peanut Butter
> 4.0 Cups Semi-sweet Chocolate Chips
>
> Melt butter. Add graham cracker crumbs,
> peanut butter and sugar. Mix well and
> pat into sheet pan. Cover with melted
> chocolate. Refrigerate until semi-firm,
> then cut into squares.
>
> --
> Michael J. Lewis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120222/afe437a2/attachment-0001.html>


More information about the Tutor mailing list