# loops.py
# Walker M. White (wmw2)
# October 6, 2015
"""Simple module showing off for simple loops"""
import string


def simple_for(seq):
    """Prints out each element of the list seq
    
    Parameter seq: the sequence to print out
    Precondition: seq a sequence (string or list)"""
    for x in seq:
        print 'Current element is '+str(x)
        print 'Still doing loops'
    print 'Done with function'


def sum(thelist):
    """Returns: the sum of all elements in thelist
    
    Parameter the list: the list to sum
    Precondition: thelist is a list of numbers (either floats or ints)"""
    result = 0
    
    for x in thelist:
        result = result+x
        print 'Adding '+str(x)+' yield '+str(result)
    
    return result


def num_ints(thelist):
    """Returns: the number of ints in thelist
    
    Parameter thelist: the list to count
    Precondition: thelist is a list of any mix of types"""
    result = 0
    
    for x in thelist:
        if type(x) == int:
            print str(x)+' is an int'
            result = result+1
    
    return result


def copy_add_one(thelist):
    """Returns: copy with 1 added to every element
    
    Parameter the list: the list to copy
    Precondition: thelist is a list of numbers (either floats or ints)"""
    mycopy = []  # accumulator
    
    for x in thelist:
        x = x+1
        mycopy.append(x)  # add to end of accumulator
    
    return mycopy


def num_digits(s):
    """Returns: number of chars in s that are digits
    
    Parameter s: the string to count
    Precondition: s a string"""
    total = 0  # Holds the digit count
        
    for c in s:
        if c in string.digits:
            total = total + 1 # Increment if character is a digit
    
    return total


def no_blanks(s):
    """Returns: copy of s with no blanks
    
    Parameter s: the string to copy
    Precondition: s a string"""
    result = '' # Holds the copy string
    
    for c in s:
        if not c in string.whitespace:
            result = result+c # glue it to the result
    
    return result