Re: Re: Re: Date using input
I don't think I am using re.compile properly, but thought as this would make my output an object it would be better for later, is that correct? #Obtain date def ObtainDate(date): date = raw_input("Type Date dd/mm/year: ") re.split('[/]+', date) date year = date[-1] month = date[1] day = date[0] re.compile('year-month-day') On Sep 25, 2009 8:32am, flebber.c...@gmail.com wrote: Okay, thanks for the advice that sounds a good place to start. I used %2.os was an attempt to define width and precision to stop typo errors eg the user accidentally inputing 101/09/2009 or similar error. So that the __/__/ was adhered to. I will go back to the start get the basics happening and then figure out a way to catch errors with format and correctness. Thanks On Sep 25, 2009 3:57am, Dave Angel da...@ieee.org> wrote: > flebber wrote: > > > On Sep 24, 11:10 pm, flebber flebber.c...@gmail.com> wrote: > > > > > On Sep 24, 10:58 pm, Dave Angel da...@ieee.org> wrote: > > > > > > > > > > > flebber.c...@gmail.com wrote: > > > > > I am using python 2.6.2, I haven't updated to 3.0 yet. No I have no > > class or instructor, I am learning this myself. I have Hetlands book > > "Beginning Python Novice to Professional and online documentation > > books so Dive into Python, python.org etc. > > Using the SPE editor. > > I have currently only fully written basic psuedocode to give me a > > basic framework to guide myself. > > #Basic pseudocode > > #Purpose to get raw input and calculate a score for a field of options > > and return that > > #score in a set in descending order. > > #Multiple sets sould be written to the doc > > #Obtain date > > #Check if txt file with same date exists. If yes apphend to results to > > file. > > #Obtain location > > #Set Dictionary > > #Event number > > #Obtain set size > > #Prompt first entry > > #First Entry Number > > #First Entry Name > > #Set Blocks to obtain and calculate data > > #Block 1 example - Placings Block > > #Obtain number of events competed in > > #Obtain how many times finished first > > #Ensure this value is not greater than Number of Events > > #Number of Firsts divide by Events * total by 15. > > #Obtain Second finishes > > #Ensure this value is not greater than Number of Events > > #Number of Seconds divide by Events * total by 10. > > #Continue On with this > > #Block 2 - Lookup coach Dict and apply value. > > #Obtain Surname of Coach > > #Lookup Coach File and Match Name and get value. > > #Blocks continue gaining and calculating values. > > #create txt file named using date > > #Sum Values Block1 + Block2 etc > > #Print to file event number and field with name number individual > > Block totals and Sum Total > > #Arranged in descending Sum Total. > > #Prompt are there any more events? Yes return to start > > #Apphend all additional events to same day file seperated by blank line. > > > > > How many of these steps have you attempted actually coding? Seems to me > > your first two steps are just string manipulation, and you only need to > > use the datetime module if you need to validate. In other words, if the > > user specifies the date as 31/09/2009, you might want to later bounce > > back to him with a complaint that September only has 30 days. > > So the first task is to accept input in the form ab/cd/efgh and > > produce a string efgh-cd-ab.log which you will then create as a text > > file. And if the file exists, you'll append to it instead of > > overwriting it. Can you do that much? > > DaveA > > > > > Trying but haven't got it working, thats why I started to try and use > > datetime module. > > > > > > > Surely getting it tottally mixed up > > > > from datetime import date > > def ObtainDate(params): > > date =aw_input("Type Date dd/mm/year: %2.0r%2.0r/%2.0r%2.0r/%4.0r > > %4.0r%4.0r%4.0r") > > print date.datetime(year-month-day) > > #Check if txt file with same date exists. If yes apphend to results > > to file. > > date.append(datetime > > > > and > > > > def ObtainDate(params): > > date =aw_input("Type Date dd/mm/year: ") > > date.format =%4.0s%4.0s%4.0s%4.0s-%2.0s%2.0s-%2.0s) > > print date.format > > > > > > > > > > > As Tim says, first thing you want to do is rename that variable. You've defined two symbols with the same name. > > > > Then I'd ask what that %2.0r stuff is inside the prompt to the user. > > > > Do you understand what kind of data is returned by raw_input() ? If so, look at the available methods of that type, and see if there's one called split() that you can use to separate out the multiple parts of the user's response. You want to separate the dd from the mm and from the year. > > > > Once you've split the text, then you want to recombine it in a different order, and with dashes between the parts. If I were at your stage of experience, I'd not bother with the datetime module at all. Just see if you can rebuild the string you need, assuming the user has entered a valid 10-character string. > > > > Later you
Re: Re: Date using input
Okay, thanks for the advice that sounds a good place to start. I used %2.os was an attempt to define width and precision to stop typo errors eg the user accidentally inputing 101/09/2009 or similar error. So that the __/__/ was adhered to. I will go back to the start get the basics happening and then figure out a way to catch errors with format and correctness. Thanks On Sep 25, 2009 3:57am, Dave Angel wrote: flebber wrote: On Sep 24, 11:10 pm, flebber flebber.c...@gmail.com> wrote: On Sep 24, 10:58 pm, Dave Angel da...@ieee.org> wrote: flebber.c...@gmail.com wrote: I am using python 2.6.2, I haven't updated to 3.0 yet. No I have no class or instructor, I am learning this myself. I have Hetlands book "Beginning Python Novice to Professional and online documentation books so Dive into Python, python.org etc. Using the SPE editor. I have currently only fully written basic psuedocode to give me a basic framework to guide myself. #Basic pseudocode #Purpose to get raw input and calculate a score for a field of options and return that #score in a set in descending order. #Multiple sets sould be written to the doc #Obtain date #Check if txt file with same date exists. If yes apphend to results to file. #Obtain location #Set Dictionary #Event number #Obtain set size #Prompt first entry #First Entry Number #First Entry Name #Set Blocks to obtain and calculate data #Block 1 example - Placings Block #Obtain number of events competed in #Obtain how many times finished first #Ensure this value is not greater than Number of Events #Number of Firsts divide by Events * total by 15. #Obtain Second finishes #Ensure this value is not greater than Number of Events #Number of Seconds divide by Events * total by 10. #Continue On with this #Block 2 - Lookup coach Dict and apply value. #Obtain Surname of Coach #Lookup Coach File and Match Name and get value. #Blocks continue gaining and calculating values. #create txt file named using date #Sum Values Block1 + Block2 etc #Print to file event number and field with name number individual Block totals and Sum Total #Arranged in descending Sum Total. #Prompt are there any more events? Yes return to start #Apphend all additional events to same day file seperated by blank line. How many of these steps have you attempted actually coding? Seems to me your first two steps are just string manipulation, and you only need to use the datetime module if you need to validate. In other words, if the user specifies the date as 31/09/2009, you might want to later bounce back to him with a complaint that September only has 30 days. So the first task is to accept input in the form ab/cd/efgh and produce a string efgh-cd-ab.log which you will then create as a text file. And if the file exists, you'll append to it instead of overwriting it. Can you do that much? DaveA Trying but haven't got it working, thats why I started to try and use datetime module. Surely getting it tottally mixed up from datetime import date def ObtainDate(params): date =aw_input("Type Date dd/mm/year: %2.0r%2.0r/%2.0r%2.0r/%4.0r %4.0r%4.0r%4.0r") print date.datetime(year-month-day) #Check if txt file with same date exists. If yes apphend to results to file. date.append(datetime and def ObtainDate(params): date =aw_input("Type Date dd/mm/year: ") date.format =%4.0s%4.0s%4.0s%4.0s-%2.0s%2.0s-%2.0s) print date.format As Tim says, first thing you want to do is rename that variable. You've defined two symbols with the same name. Then I'd ask what that %2.0r stuff is inside the prompt to the user. Do you understand what kind of data is returned by raw_input() ? If so, look at the available methods of that type, and see if there's one called split() that you can use to separate out the multiple parts of the user's response. You want to separate the dd from the mm and from the year. Once you've split the text, then you want to recombine it in a different order, and with dashes between the parts. If I were at your stage of experience, I'd not bother with the datetime module at all. Just see if you can rebuild the string you need, assuming the user has entered a valid 10-character string. Later you can go back and figure out the datetime logic. DaveA -- http://mail.python.org/mailman/listinfo/python-list
Re: Re: Date using input
I am using python 2.6.2, I haven't updated to 3.0 yet. No I have no class or instructor, I am learning this myself. I have Hetlands book "Beginning Python Novice to Professional and online documentation books so Dive into Python, python.org etc. Using the SPE editor. I have currently only fully written basic psuedocode to give me a basic framework to guide myself. #Basic pseudocode #Purpose to get raw input and calculate a score for a field of options and return that #score in a set in descending order. #Multiple sets sould be written to the doc #Obtain date #Check if txt file with same date exists. If yes apphend to results to file. #Obtain location #Set Dictionary #Event number #Obtain set size #Prompt first entry #First Entry Number #First Entry Name #Set Blocks to obtain and calculate data #Block 1 example - Placings Block #Obtain number of events competed in #Obtain how many times finished first #Ensure this value is not greater than Number of Events #Number of Firsts divide by Events * total by 15. #Obtain Second finishes #Ensure this value is not greater than Number of Events #Number of Seconds divide by Events * total by 10. #Continue On with this #Block 2 - Lookup coach Dict and apply value. #Obtain Surname of Coach #Lookup Coach File and Match Name and get value. #Blocks continue gaining and calculating values. #create txt file named using date #Sum Values Block1 + Block2 etc #Print to file event number and field with name number individual Block totals and Sum Total #Arranged in descending Sum Total. #Prompt are there any more events? Yes return to start #Apphend all additional events to same day file seperated by blank line. On Sep 24, 2009 9:59pm, Dave Angel wrote: flebber wrote: Sorry to ask a simple question but I am a little confused how to combine the input function and the date time module. Simply at the start of the program I want to prompt the user to enter the date, desirably in the format dd/mm/year. However I want to make sure that python understands the time format because first the date will form part of the name of the output file so dd/mm/year as 1st September 2009, secondly if I have multiple output files saved in a directory I may need to search later on the files and contents of files by date range. So can I timestamp the file? I know this is a simple question but it eludes me exactly how to do it. I have the basics from http://docs.python.org/library/datetime.html from datetime import date date = input("type date dd/mm/year: ") datetime(day,month,year) # some program blocks #print to file(name = date) or apphend if it exists What version of python is your class, instructor, and text book using? If you want to learn fastest, you probably need to be using the same, or nearly same environment. The input() function is one place where it matters whether it's Python 2.x or Python 3.x. While you're at it, you should give the rest of your environment, such as which OS. The doc page you pointed us to is for Python 2.6.2, but the input function on that version returns an integer. Perhaps you want raw_input() ? What code have you written, and what about it doesn't work? Have you added print statements before the line that causes the error to see what the intermediate values are? To try to anticipate some of your problems, you should realize that in most file systems, the slash is a reserved character, so you can't write the date that way. I'd suggest using dashes. I put dates in directory names, and I always put year, then month, then day, because then sorting the filenames also sorts the dates. I'm not in a country that sorts dates that way, but it does make things easier. So directories for the last few days would be: 2009-09-22 2009-09-23 2009-09-24 When asking the user for a date, or telling him a date, by all means use your country's preferred format, as you say. You mention timestamping the file. While that can be done (Unix touch, for example), I consider it a last resort for keeping track of useful information. At best, it should be an extra "reminder" of something that's already in the file contents. And since many programs make the assumption that if the timestamp doesn't change, the contents haven't changed, you can only reasonably do this on a file whose contents are fixed when first created. If you control the internal format of the file, put the date there, perhaps right after the header which defines the data type and version. -- http://mail.python.org/mailman/listinfo/python-list