141k views
3 votes
This is similar to the last problem, except that the first number on a line is an ID number that identifies an account. The same ID number may appear on any number of lines. Use a Dictionary to accumulate, for each ID, the sum of all the numbers that are on all the lines with that ID number. Call the input file id_data.txt. Write an output file called ID_sums.txt. On each line of the output fille, print an ID number and the sum. Sort the lines by the numerical order of the IDs

User Chinenye
by
5.6k points

1 Answer

2 votes

Answer:

Following are the code to this question:

def getSum(ID):#defining a method getSum that accept an ID

t= 0#defining a variable t

while ID!= 0:#defining while loop to check ID not equal to 0

t+= ID % 10# holding remainder value

ID = ID // 10#holding quotient value

return t#return total value

def readRecord(S):#defining a method readRecord that hold list

f_Read = open("idInfo.txt","r")#defining a variable f_Read to open file

for C_ID in f_Read:#defining for loop to hold file value

C_ID = C_ID.replace('\\', '')#use replace method

S[C_ID] = getSum(int(C_ID))#use list to method value

f_Read.close()#close file

def sortRecord(ID_List, t_List):#defining a sortRecord

for x in range(len(ID_List) - 1):#defining for loop to calculate the length of list

for y in range(0, len(ID_List) - x - 1):#defining for loop to calculate the length of list

if ID_List[y] > ID_List[y+1]:#defining if block to check value is greater

ID_List[y], ID_List[y+1] = ID_List[y+1], ID_List[y]#swap the value

t_List[y], t_List[y+1] = t_List[y+1], t_List[y]#swap the value

def showReport(ID, t):#defining a method showReport that accept id and t

for i in range(len(ID)):#defining for loop to hold index value

print(ID[i]," ",t[i])#print index value

def writeRecord(ID_List, t_List):#defining a method writeRecord that accept two list

f_Write = open("idSorted.txt","w")#defining a variable f_Write to hold store value in file

for i in range(len(ID_List)):#defining a for loop to store value with index

f_Write.write(ID_List[i])#hold list value

f_Write.write(" ") #for space

f_Write.write(str(t_List[i]) + "\\")# add index value

f_Write.close()#close file

def run():#defining method run

S = {}#defining an empty list

readRecord(S)#passing list into readRecord method

ID_List = list(S.keys())#defining a variable that holds key value in list

t_List = list(S.values())#defining a variable that holds values value in list

sortRecord(ID_List, t_List)#calling a method sortRecord by passing value

showReport(ID_List, t_List)#calling a method showReport by passing value

writeRecord(ID_List, t_List)#calling a method writeRecord by passing value

if "run":

run()

Output:

Please find the attached file.

Step-by-step explanation:

In the above program code, 6 method getSum, readRecord, sortRecord,showReport, writeRecord, and run method is defined, in which getSum and readRecord is used a single list store value in parameters, and in other methods, it accepts two parameter to store value in key and values form and use a txt file to store and take value.

In the run method, an empty list s is declared, that pass into the variable ID_List and t_List, and call the method, in this program two a text file "idInfo.txt" is used, that holds some value in the file, and create another file that is "idSorted.txt", in this file it stores the value in the numerical order of the ID's.

This is similar to the last problem, except that the first number on a line is an-example-1
User Febin K R
by
6.3k points