I'm given a problem that explicitly asks me not to use numpy or pandas.
Problem:
Given a string with digits and '_'
(missing value) symbols you have to replace the '_'
symbols as explained
Ex 1: _, _, _, 24 ==> 24/4, 24/4, 24/4, 24/4 i.e we. have distributed the 24 equally to all 4 places
Ex 2: 40, _, _, _, 60 ==> (60+40)/5,(60+40)/5,(60+40)/5,(60+40)/5,(60+40)/5 ==> 20, 20, 20, 20, 20 i.e. the sum of (60+40) is distributed qually to all 5 places
Ex 3: 80, _, _, _, _ ==> 80/5,80/5,80/5,80/5,80/5 ==> 16, 16, 16, 16, 16 i.e. the 80 is distributed qually to all 5 missing values that are right to it
Ex 4: _, _, 30, _, _, _, 50, _, _
==> we will fill the missing values from left to right
a. first we will distribute the 30 to left two missing values (10, 10, 10, _, _, _, 50, _, _)
b. now distribute the sum (10+50) missing values in between (10, 10, 12, 12, 12, 12, 12, _, _)
c. now we will distribute 12 to right side missing values (10, 10, 12, 12, 12, 12, 4, 4, 4)
for a given string with comma separated values, which will have both missing values numbers like ex: "_, _, x, _, _, " you need fill the missing values Q: your program reads a string like ex: ", _, x, _, _, _" and returns the filled sequence Ex:
Input1: "_,_,_,24"
Output1: 6,6,6,6
Input2: "40,_,_,_,60"
Output2: 20,20,20,20,20
Input3: "80,_,_,_,_"
Output3: 16,16,16,16,16
Input4: "_,_,30,_,_,_,50,_,_"
Output4: 10,10,12,12,12,12,4,4,4
I'm trying to split the string in a list using the split function. I'm then trying to check for blanks on the left and the count the number of such blanks and then once I encounter a non-blank, I'm dividing that number by the total count i.e (no.blanks encountered before the number and number itself) and spreading the values and replacing the blanks left the number
Then I'm checking for the blanks in between two number and then applying the same logic, after which doing the same for blanks on the right.
However, the code I shared below is throwing all sorts of errors, and I believe there are gaps in logic I shared above, therefore would appreciate insights on solving this issue
def blanks(S):
a= S.split()
count = 0
middle_store = 0
#left
for i in range(len(a)):
if(a[i]=='_'):
count = count+1 #find number of blanks to the left of a number
else:
for j in range(0,i+1):
#if there are n blanks to the left of the number speard the number equal over n+1 spaces
a[j] = str((int(a[i])/(count+1)))
middle_store= i
break
#blanks in the middle
denominator =0
flag = 0
for k in len(middle_store+1,len(a)):
if(a[k] !='_'):
denominator = (k+1-middle_store)
flag=k
break
for p in len(middle_store,flag+1):
a[p] = str((int(a[p])/denominator))
#blanks at the right
for q in len(flag,len(a)):
a[q] = str((int(a[q])/(len(a)-flag+1)))
S= "_,_,30,_,_,_,50,_,_"
print(blanks(S))