Difference between revisions of "CSC111 A Form Generator Program"
(→Exercise) |
(→Exercise) |
||
Line 73: | Line 73: | ||
>>> | >>> | ||
+ | |||
+ | |||
+ | ==Solution Program== | ||
+ | <onlydft> | ||
+ | <source lang="python"> | ||
+ | # formgen.py | ||
+ | # D. Thiebaut | ||
+ | # generates a form with names of candidates | ||
+ | # | ||
+ | # the program first prompts the user | ||
+ | # for the width of the form, and the number | ||
+ | # of names for which forms will be generated | ||
+ | # Then the user enters the names and the program | ||
+ | # outputs the forms, one per name. | ||
+ | # The format of the form is shown in the body of | ||
+ | # the welcome() function. | ||
+ | # | ||
+ | |||
+ | def welcome(): | ||
+ | # displays welcome screen to user | ||
+ | print( """ | ||
+ | +--------------------------------------+ | ||
+ | |formgen.py | Date: | | ||
+ | | +-------------------+ | ||
+ | | | | ||
+ | +--------------------------------------+ | ||
+ | | | | ||
+ | | AUTOMATIC FORM GENERATOR | | ||
+ | | | | ||
+ | | | | ||
+ | | | | ||
+ | +--------------------------------------+\n\n""" ) | ||
+ | |||
+ | |||
+ | def main(): | ||
+ | welcome() | ||
+ | |||
+ | # get data from the user | ||
+ | totalWidth = eval( input( "Width of box? " ) ) | ||
+ | heightBox = eval( input( "Height of blank box? " ) ) | ||
+ | noNames = eval( input( "How many names? " ) ) | ||
+ | names = [] | ||
+ | for i in range( noNames ): | ||
+ | names.append( input( "> " ) ) | ||
+ | |||
+ | |||
+ | # compute various quantities | ||
+ | bar = "+" + '-' * (totalWidth-2 ) + '+' | ||
+ | blank = '|' + ' ' * (totalWidth-2 ) + '|' | ||
+ | dateLine = '| Date: |' | ||
+ | dateLine2 = '+-------------------+' | ||
+ | noSpacesB4 = totalWidth-len( dateLine )-1 | ||
+ | dateLine2 = '|'+' '*noSpacesB4 + dateLine2 | ||
+ | |||
+ | # space things out | ||
+ | print( "\n\n\n\n\n" ) | ||
+ | |||
+ | # output the forms for each name | ||
+ | for name in names: | ||
+ | print( bar ) | ||
+ | totalNoSpaces = totalWidth - 2 - len( name ) | ||
+ | noSpacesB4Date = totalNoSpaces +1 - len( dateLine ) | ||
+ | |||
+ | print( '|' + name + ' '* noSpacesB4Date + dateLine ) | ||
+ | print( dateLine2 ) | ||
+ | print( blank ) | ||
+ | print( bar ) | ||
+ | for i in range( heightBox ): | ||
+ | print( blank ) | ||
+ | print( bar ) | ||
+ | print() | ||
+ | |||
+ | print() | ||
+ | |||
+ | |||
+ | main() | ||
+ | |||
+ | </source> | ||
+ | </onlydft> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | [[Category:CSC111]][[Category:Exercises]][[Category:Python]] |
Revision as of 07:57, 27 September 2011
--D. Thiebaut 08:54, 27 September 2011 (EDT)
Exercise
Write a Python program that displays forms around names. The forms can be used to record information about candidates for a particular position, for example.
Below is an example of an interaction between the user and the finished program:
>>> ================================ RESTART ================================ >>> +--------------------------------------+ |formgen.py | Date: | | +-------------------+ | | +--------------------------------------+ | | | AUTOMATIC FORM GENERATOR | | | | | | | +--------------------------------------+ Width of box? 40 Height of blank box? 4 How many names? 3 > Alice > Tintin et Milou > Bugs Bunny +--------------------------------------+ |Alice | Date: | | +-------------------+ | | +--------------------------------------+ | | | | | | | | +--------------------------------------+ +--------------------------------------+ |Tintin et Milou | Date: | | +-------------------+ | | +--------------------------------------+ | | | | | | | | +--------------------------------------+ +--------------------------------------+ |Bugs Bunny | Date: | | +-------------------+ | | +--------------------------------------+ | | | | | | | | +--------------------------------------+
>>>
Solution Program