+1 (315) 557-6473 

Python Program to Implement Modular Programming Assignment Solution.


Instructions

Objective
Write a Python assignment to implement modular programming in Python. In this program, you will create a set of functions that perform specific tasks and then combine them to build a larger application. Modular programming promotes code reusability and maintainability, as each function can be independently developed and tested. Your Python assignment should include a main module that calls the functions from separate modules to perform a complete task. Be sure to demonstrate your understanding of functions, parameters, and return values in Python. Properly comment on your code to explain the logic behind each function and its usage in the main module.

Requirements and Specifications

program to implement modular programming in python
program to implement modular programming in python 1

Source Code

import math

from os.path import exists

def calculateZscore(fin, fout):

# List to store z values

zlist = list()

# Read all lines

lines = fin.readlines()

# Close file

fin.close()

# Loop through lines

for line in lines:

# Strip

line = line.strip()

# Split

row = line.split(',')

county = row[0]

x = float(row[1])

y = float(row[2])

Oi = int(row[3])

Ei = int(row[4])

# Calculate zi

zi = (Oi-Ei)/math.sqrt(Ei)

# Append to list

zlist.append(zi)

# Write to output file

fout.write(line + "," + str(zi) + "\n")

return zlist

def globalchiSquare(zlist):

# Variable to store globalchi square

X2 = 0.0

# Loop over the z scores

for zi in zlist:

# Add the square value of this zi score

X2 += zi**2

#Get number of records

n = len(zlist)

# Return

return (X2, n)

def chiCritical(chiFile, n, siglevel):

# First, read the chiFile. Get all lines

lines = chiFile.readlines()

# Since the first line contains the header, we will ignore it

lines.pop(0)

# Now, read all values, split and store into a list of sublist

chitable = list()

for line in lines:

# Strip

line = line.strip()

# Split

row = line.split(' ')

# Convert all elements in row to float

sublist = list()

for x in row:

if len(x) > 0:

sublist.append(float(x))

chitable.append(sublist)

# Now, get degree of freedon

df = n - 1

# Search for the row where df is equal to this value

Pcritical = None

for row in chitable:

if row[0] == df:

# Get P value

if siglevel == 5.0:

Pcritical = row[1]

elif siglevel == 1.0:

Pcritical = row[2]

else:

Pcritical = row[3]

break

return Pcritical

def main():

# Ask for filename

while True:

filenamein = input("What is the name of the input file?: ")

# Check that files exist

if not exists(filenamein):

print('***Error: Input File Not Found, try Again***')

else:

break

while True:

filename_chi = input("What is the name of the chi-squared table? ")

if not exists(filename_chi):

print('***Error: Input File Not Found, try Again***')

else:

break

filenameout = input("What is the name of the output file? ")

# Ask for significance level

while True:

try:

siglevel = float(input("What is the significance level? 5, 1, or 0.1? (%) "))

if siglevel == 5.0 or siglevel == 1.0 or siglevel == 0.1:

break

else:

print("***Error: Invalid Significance Leel, Try Again***")

except:

print("***Error: Invalid Significance Leel, Try Again***")

# Open file with data

inFile = open(filenamein, 'r')

# Open output file

outFile = open(filenameout, 'w+')

# Open chitable file

chiFile = open(filename_chi, 'r')

print("Performing chi-squared test on SIDS cases in North Carolina")

zList = calculateZscore(inFile, outFile)

(X2, n) = globalchiSquare(zList)

Pcritical = chiCritical(chiFile, n, siglevel)

print(f'There are {n} Counties in the sample dataset')

print('The global chi-squared statistic is {:.2f}'.format(X2))

print('Critical value at {:.1f}% significance level: {:.2f}'.format(siglevel, Pcritical))

if X2 > Pcritical:

print('The null hypothesis of no spatial pattern *is rejected* at {:.1f}% significance level'.format(siglevel))

else:

print('The null hypothesis of no spatial pattern *cannot be rejected* at {:.1f}% significance level'.format(siglevel))

# Close

inFile.close()

outFile.close()

chiFile.close()

if __name__ == '__main__':

main()