<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andy</title>
    <description>The latest articles on DEV Community by Andy (@andy88).</description>
    <link>https://dev.to/andy88</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2710805%2Fa40829e2-9251-43f1-909e-3bf4e09aff25.png</url>
      <title>DEV Community: Andy</title>
      <link>https://dev.to/andy88</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andy88"/>
    <language>en</language>
    <item>
      <title>Python to get average--can this be improved? Or is there existing code/apps/etc. that do this?</title>
      <dc:creator>Andy</dc:creator>
      <pubDate>Tue, 14 Jan 2025 18:58:49 +0000</pubDate>
      <link>https://dev.to/andy88/can-this-be-improved-or-is-there-existing-codeappsetc-that-do-this-4obp</link>
      <guid>https://dev.to/andy88/can-this-be-improved-or-is-there-existing-codeappsetc-that-do-this-4obp</guid>
      <description>&lt;p&gt;jillnatale@Jills-MacBook-Air ~ % python3 getAveWorks-v1.py3&lt;br&gt;&lt;br&gt;
Enter numbers ito be averaged separated by commas: 050, 50.000, 100, .0, 198., 000302.&lt;br&gt;
initial array is:&lt;br&gt;
['050', ' 50.000', ' 100', ' .0', ' 198.', ' 000302.']&lt;br&gt;
adding dot to 050...&lt;br&gt;
--now it's 050.&lt;br&gt;
removing leading 0s from 050....&lt;br&gt;
--now it's 50.&lt;br&gt;
theDotLocation for 50. is 2&lt;br&gt;
theLen for 50. is 3&lt;br&gt;
theScale for 50. is 0&lt;br&gt;
theScaledNum is 50&lt;br&gt;
theDotLocation for 50.000 is 2&lt;br&gt;
removing trailing 0s from 50.000...&lt;br&gt;
--now it's 50.00&lt;br&gt;
removing trailing 0s from 50.00...&lt;br&gt;
--now it's 50.0&lt;br&gt;
removing trailing 0s from 50.0...&lt;br&gt;
--now it's 50.&lt;br&gt;
theLen for 50. is 3&lt;br&gt;
theScale for 50. is 0&lt;br&gt;
theScaledNum is 50&lt;br&gt;
adding dot to 100...&lt;br&gt;
--now it's 100.&lt;br&gt;
theDotLocation for 100. is 3&lt;br&gt;
theLen for 100. is 4&lt;br&gt;
theScale for 100. is 0&lt;br&gt;
theScaledNum is 100&lt;br&gt;
theDotLocation for .0 is 0&lt;br&gt;
removing trailing 0s from .0...&lt;br&gt;
--now it's .&lt;br&gt;
theLen for . is 1&lt;br&gt;
theScale for . is 0&lt;br&gt;
theScaledNum is 0&lt;br&gt;
theDotLocation for 198. is 3&lt;br&gt;
theLen for 198. is 4&lt;br&gt;
theScale for 198. is 0&lt;br&gt;
theScaledNum is 198&lt;br&gt;
removing leading 0s from 000302....&lt;br&gt;
--now it's 00302.&lt;br&gt;
removing leading 0s from 00302....&lt;br&gt;
--now it's 0302.&lt;br&gt;
removing leading 0s from 0302....&lt;br&gt;
--now it's 302.&lt;br&gt;
theDotLocation for 302. is 3&lt;br&gt;
theLen for 302. is 4&lt;br&gt;
theScale for 302. is 0&lt;br&gt;
theScaledNum is 302&lt;br&gt;
intermediate array is:&lt;br&gt;
[['50', 0], ['50', 0], ['100', 0], ['0', 0], ['198', 0], ['302', 0]]&lt;br&gt;
maxScale = 0&lt;br&gt;
summing and scaling...&lt;br&gt;
--after summing and scaling:&lt;br&gt;
[['50', 0], ['50', 0], ['100', 0], ['0', 0], ['198', 0], ['302', 0]]&lt;br&gt;
sum is 700&lt;br&gt;
getting sum's primes...&lt;br&gt;
found prime 2--&lt;br&gt;
...2 time(s), adding [2,2]&lt;br&gt;
found prime 5--&lt;br&gt;
...2 time(s), adding [5,2]&lt;br&gt;
found prime 7--&lt;br&gt;
...1 time(s), adding [7,1]&lt;br&gt;
--sumsPrimes:&lt;br&gt;
[[2, 2], [5, 2], [7, 1]]&lt;br&gt;
getting numberOfNumbers' primes...&lt;br&gt;
found prime 2--&lt;br&gt;
...1 time(s), adding [2,1]&lt;br&gt;
found prime 3--&lt;br&gt;
...1 time, adding [3,1]&lt;br&gt;
--sumsPrimes and&lt;br&gt;
  numberOfNumbersPrimes are:&lt;br&gt;
[[2, 2], [5, 2], [7, 1]]&lt;br&gt;
[[2, 1], [3, 1]]&lt;br&gt;
Scale = 0&lt;br&gt;
reducing...&lt;br&gt;
in outer while&lt;br&gt;
in outer while&lt;br&gt;
in outer while&lt;br&gt;
--after reducing,&lt;br&gt;
sumsPrimes and&lt;br&gt;
numberOfNumbersPrimes are:&lt;br&gt;
[[2, 1], [5, 2], [7, 1]]&lt;br&gt;
[[3, 1]]&lt;br&gt;
Scale = 0&lt;br&gt;
denominator is not a product of only 2's and 5's&lt;br&gt;
ave = 116 2/3&lt;br&gt;
jillnatale@Jills-MacBook-Air ~ % cat getAveMy4.py getAveWorks-v1.py3&lt;br&gt;
import math&lt;br&gt;
input_string = input("Enter numbers ito be averaged separated by commas: ")&lt;br&gt;
numbers = input_string.split(",")&lt;br&gt;
print("initial array is:")&lt;br&gt;
print (numbers)&lt;/p&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no ", ," allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "nn nn" (missing ",") allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "l" (must be #s) allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. allow "-", etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "nn.nn.nn" allowed, etc.)
&lt;/h1&gt;

&lt;p&gt;numberOfNumbers = len(numbers)&lt;br&gt;
oar = []&lt;br&gt;
maxScale = 0&lt;br&gt;
for theNum in numbers:&lt;br&gt;
    iar = []&lt;br&gt;
    theNum = theNum.replace(" ","")&lt;br&gt;
    theDotLocation = theNum.find('.')&lt;br&gt;
    if theDotLocation == -1:&lt;br&gt;
        print("adding dot to %s..." % theNum)&lt;br&gt;
        theNum = theNum + "."&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
    while theNum[0] == '0' and theNum != "0.":&lt;br&gt;
        print("removing leading 0s from %s..." % theNum)&lt;br&gt;
        theNum = theNum[1:]&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
    if theNum == ".":&lt;br&gt;
        # ??? dead code?&lt;br&gt;
        theNum = "0."&lt;br&gt;
    theDotLocation = theNum.find('.')&lt;br&gt;
    print("theDotLocation for %s is %d" % (theNum, theDotLocation))&lt;br&gt;
    i = len(theNum) - 1&lt;br&gt;
    while theNum[i] == '0':&lt;br&gt;
        print("removing trailing 0s from %s..." % theNum)&lt;br&gt;
        theNum = theNum[:-1]&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
        i -= 1&lt;br&gt;
        #todo handle .0 input&lt;br&gt;
    theLen = len(theNum)&lt;br&gt;
    print("theLen for %s is %d" % (theNum, theLen))&lt;br&gt;
    theScale = theLen - theDotLocation - 1&lt;br&gt;
    print("theScale for %s is %d" % (theNum, theScale))&lt;br&gt;
    theScaledNum = theNum.replace('.','')&lt;br&gt;
    if theScaledNum == "":&lt;br&gt;
        theScaledNum = "0"&lt;br&gt;
    print("theScaledNum is %s" % theScaledNum)&lt;br&gt;
    while theScaledNum[0] == '0' and theScaledNum != "0":&lt;br&gt;
        print("removing leading 0s from %s..." % theScaledNum)&lt;br&gt;
        theScaledNum = theScaledNum[1:]&lt;br&gt;
        print("--now it's %s" % theScaledNum)&lt;br&gt;
    if theScaledNum == "":&lt;br&gt;
        # ??? dead code?&lt;br&gt;
        theScaledNum = "0"&lt;br&gt;
    iar.append(theScaledNum)&lt;br&gt;
    iar.append(theScale)&lt;br&gt;
    if(maxScale &amp;lt; theScale):&lt;br&gt;
        print("changing maxScale from %d..." % maxScale)&lt;br&gt;
        maxScale = theScale&lt;br&gt;
        print("--to %d" % maxScale)&lt;br&gt;
    oar.append(iar)&lt;br&gt;
print("intermediate array is:")&lt;br&gt;
print(oar)&lt;br&gt;
print("maxScale = %d" % maxScale)&lt;br&gt;
print("summing and scaling...")&lt;br&gt;
sum = 0&lt;br&gt;
for ar in oar:&lt;br&gt;
    if ar[1] &amp;lt; maxScale:&lt;br&gt;
        for n in range(maxScale - ar[1]):&lt;br&gt;
            #print(ar)&lt;br&gt;
            #print(n)&lt;br&gt;
            ar[0] += "0"&lt;br&gt;
            ar[1] += 1&lt;br&gt;
            #print(ar)&lt;br&gt;
    sum += int(ar[0])&lt;br&gt;
print("--after summing and scaling:")&lt;br&gt;
print(oar)&lt;br&gt;
print("sum is %d" % sum)&lt;br&gt;
print("getting sum's primes...")&lt;br&gt;
sumsPrimes = []&lt;br&gt;
n = sum&lt;br&gt;
if n % 2 == 0:&lt;br&gt;
    print("found prime 2--")&lt;br&gt;
    hits = 0&lt;br&gt;
    while n % 2 == 0:&lt;br&gt;
        hits += 1&lt;br&gt;
        n = n // 2&lt;br&gt;
    print("...%d time(s), adding [2,%d]" % (hits, hits))&lt;br&gt;
    sumsPrimes.append([2,hits])&lt;br&gt;
for i in range(3,int(math.sqrt(n))+1,2):&lt;br&gt;
    if n % i == 0:&lt;br&gt;
        print("found prime %d--" % i)&lt;br&gt;
        hits = 0&lt;br&gt;
        while n % i == 0:&lt;br&gt;
            hits += 1&lt;br&gt;
            n = n // i&lt;br&gt;
        print("...%d time(s), adding [%d,%d]" % (hits, i, hits))&lt;br&gt;
        sumsPrimes.append([i,hits])&lt;br&gt;
if n &amp;gt; 2:&lt;br&gt;
    print("found prime %d--" % n)&lt;br&gt;
    print("...1 time, adding [%d,1]" % n)&lt;br&gt;
    sumsPrimes.append([n,1])&lt;br&gt;
print("--sumsPrimes:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print("getting numberOfNumbers' primes...")&lt;br&gt;
numberOfNumbersPrimes = []&lt;br&gt;
n = numberOfNumbers&lt;br&gt;
if n % 2 == 0:&lt;br&gt;
    print("found prime 2--")&lt;br&gt;
    hits = 0&lt;br&gt;
    while n % 2 == 0:&lt;br&gt;
        hits += 1&lt;br&gt;
        n = n // 2&lt;br&gt;
    print("...%d time(s), adding [2,%d]" % (hits, hits))&lt;br&gt;
    numberOfNumbersPrimes.append([2,hits])&lt;br&gt;
for i in range(3,int(math.sqrt(n))+1,2):&lt;br&gt;
    if n % i == 0:&lt;br&gt;
        print("found prime %d--" % i)&lt;br&gt;
        hits = 0&lt;br&gt;
        while n % i == 0:&lt;br&gt;
            hits += 1&lt;br&gt;
            n = n // i&lt;br&gt;
        print("...%d time(s), adding [%d,%d]" % (hits, i, hits))&lt;br&gt;
        numberOfNumbersPrimes.append([i,hits])&lt;br&gt;
print("found prime %d--" % n)&lt;br&gt;
if n &amp;gt; 2:&lt;br&gt;
    print("...1 time, adding [%d,1]" % n)&lt;br&gt;
    numberOfNumbersPrimes.append([n,1])&lt;br&gt;
print("--sumsPrimes and")&lt;br&gt;
print("  numberOfNumbersPrimes are:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print(numberOfNumbersPrimes)&lt;br&gt;
print("Scale = %d" % maxScale)&lt;br&gt;
print("reducing...")&lt;br&gt;
n = 0&lt;br&gt;
while(len(sumsPrimes) &amp;gt; n):&lt;br&gt;
    print("in outer while")&lt;br&gt;
    m = 0&lt;br&gt;
    while(len(numberOfNumbersPrimes) &amp;gt; m):&lt;br&gt;
        if(sumsPrimes[n][0] == numberOfNumbersPrimes[m][0]):&lt;br&gt;
            if(sumsPrimes[n][1] == numberOfNumbersPrimes[m][1]):&lt;br&gt;
                val = sumsPrimes.pop(n)&lt;br&gt;
                n -= 1&lt;br&gt;
                val = numberOfNumbersPrimes.pop(m)&lt;br&gt;
                m -= 1&lt;br&gt;
                break&lt;br&gt;
            elif(sumsPrimes[n][1] &amp;gt; numberOfNumbersPrimes[m][1]):&lt;br&gt;
                sumsPrimes[n][1] -= numberOfNumbersPrimes[m][1]&lt;br&gt;
                val = numberOfNumbersPrimes.pop(m)&lt;br&gt;
                m -= 1&lt;br&gt;
                break&lt;br&gt;
            elif(sumsPrimes[n][1] &amp;lt; numberOfNumbersPrimes[m][1]):&lt;br&gt;
                numberOfNumbersPrimes[m][1] -= sumsPrimes[n][1]&lt;br&gt;
                val = sumsPrimes.pop(n)&lt;br&gt;
                n -= 1&lt;br&gt;
        m += 1&lt;br&gt;
    n += 1&lt;br&gt;
print("--after reducing,")&lt;br&gt;
print("sumsPrimes and")&lt;br&gt;
print("numberOfNumbersPrimes are:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print(numberOfNumbersPrimes)&lt;br&gt;
print("Scale = %d" % maxScale)&lt;br&gt;
allTwosOrFives = True&lt;br&gt;
for ar in numberOfNumbersPrimes:&lt;br&gt;
    if ar[0] != 2 and ar[0] != 5:&lt;br&gt;
        allTwosOrFives = False&lt;br&gt;
        break&lt;/p&gt;

&lt;h1&gt;
  
  
  todo handle "0" ???
&lt;/h1&gt;

&lt;p&gt;if allTwosOrFives == True:&lt;br&gt;
    print("sum = %d" % sum)&lt;br&gt;
    print("numberOfNumbers = %d" % numberOfNumbers)&lt;br&gt;
    print("maxScale = %d" % maxScale)&lt;br&gt;
    print("sum/numberOfNumbers = %d" % (sum/numberOfNumbers))&lt;br&gt;
    print("10*&lt;em&gt;maxScale = %d" % 10&lt;/em&gt;&lt;em&gt;-maxScale)&lt;br&gt;
    res = sum/numberOfNumbers * 10&lt;/em&gt;&lt;em&gt;-maxScale&lt;br&gt;
    print("ave = %f" % res)&lt;br&gt;
else:&lt;br&gt;
    print("denominator is not a product of only 2's and 5's")&lt;br&gt;
    N = 1&lt;br&gt;
    for ar in sumsPrimes:&lt;br&gt;
        N *= ar[0]&lt;/em&gt;&lt;em&gt;ar[1]&lt;br&gt;
    D = 1&lt;br&gt;
    for ar in numberOfNumbersPrimes:&lt;br&gt;
        D *= ar[0]&lt;/em&gt;*ar[1]&lt;br&gt;
    intRes = int(N/D)&lt;br&gt;
    remRes = N%D&lt;br&gt;
    print("ave = %d %d/%d" % (intRes, remRes, D))&lt;br&gt;
import math&lt;br&gt;
input_string = input("Enter numbers ito be averaged separated by commas: ")&lt;br&gt;
numbers = input_string.split(",")&lt;br&gt;
print("initial array is:")&lt;br&gt;
print (numbers)&lt;/p&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no ", ," allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "nn nn" (missing ",") allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "l" (must be #s) allowed, etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. allow "-", etc.)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  todo sanity check input (e.g. no "nn.nn.nn" allowed, etc.)
&lt;/h1&gt;

&lt;p&gt;numberOfNumbers = len(numbers)&lt;br&gt;
oar = []&lt;br&gt;
maxScale = 0&lt;br&gt;
for theNum in numbers:&lt;br&gt;
    iar = []&lt;br&gt;
    theNum = theNum.replace(" ","")&lt;br&gt;
    theDotLocation = theNum.find('.')&lt;br&gt;
    if theDotLocation == -1:&lt;br&gt;
        print("adding dot to %s..." % theNum)&lt;br&gt;
        theNum = theNum + "."&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
    while theNum[0] == '0' and theNum != "0.":&lt;br&gt;
        print("removing leading 0s from %s..." % theNum)&lt;br&gt;
        theNum = theNum[1:]&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
    if theNum == ".":&lt;br&gt;
        # ??? dead code?&lt;br&gt;
        theNum = "0."&lt;br&gt;
    theDotLocation = theNum.find('.')&lt;br&gt;
    print("theDotLocation for %s is %d" % (theNum, theDotLocation))&lt;br&gt;
    i = len(theNum) - 1&lt;br&gt;
    while theNum[i] == '0':&lt;br&gt;
        print("removing trailing 0s from %s..." % theNum)&lt;br&gt;
        theNum = theNum[:-1]&lt;br&gt;
        print("--now it's %s" % theNum)&lt;br&gt;
        i -= 1&lt;br&gt;
        #todo handle .0 input&lt;br&gt;
    theLen = len(theNum)&lt;br&gt;
    print("theLen for %s is %d" % (theNum, theLen))&lt;br&gt;
    theScale = theLen - theDotLocation - 1&lt;br&gt;
    print("theScale for %s is %d" % (theNum, theScale))&lt;br&gt;
    theScaledNum = theNum.replace('.','')&lt;br&gt;
    if theScaledNum == "":&lt;br&gt;
        theScaledNum = "0"&lt;br&gt;
    print("theScaledNum is %s" % theScaledNum)&lt;br&gt;
    while theScaledNum[0] == '0' and theScaledNum != "0":&lt;br&gt;
        print("removing leading 0s from %s..." % theScaledNum)&lt;br&gt;
        theScaledNum = theScaledNum[1:]&lt;br&gt;
        print("--now it's %s" % theScaledNum)&lt;br&gt;
    if theScaledNum == "":&lt;br&gt;
        # ??? dead code?&lt;br&gt;
        theScaledNum = "0"&lt;br&gt;
    iar.append(theScaledNum)&lt;br&gt;
    iar.append(theScale)&lt;br&gt;
    if(maxScale &amp;lt; theScale):&lt;br&gt;
        print("changing maxScale from %d..." % maxScale)&lt;br&gt;
        maxScale = theScale&lt;br&gt;
        print("--to %d" % maxScale)&lt;br&gt;
    oar.append(iar)&lt;br&gt;
print("intermediate array is:")&lt;br&gt;
print(oar)&lt;br&gt;
print("maxScale = %d" % maxScale)&lt;br&gt;
print("summing and scaling...")&lt;br&gt;
sum = 0&lt;br&gt;
for ar in oar:&lt;br&gt;
    if ar[1] &amp;lt; maxScale:&lt;br&gt;
        for n in range(maxScale - ar[1]):&lt;br&gt;
            #print(ar)&lt;br&gt;
            #print(n)&lt;br&gt;
            ar[0] += "0"&lt;br&gt;
            ar[1] += 1&lt;br&gt;
            #print(ar)&lt;br&gt;
    sum += int(ar[0])&lt;br&gt;
print("--after summing and scaling:")&lt;br&gt;
print(oar)&lt;br&gt;
print("sum is %d" % sum)&lt;br&gt;
print("getting sum's primes...")&lt;br&gt;
sumsPrimes = []&lt;br&gt;
n = sum&lt;br&gt;
if n % 2 == 0:&lt;br&gt;
    print("found prime 2--")&lt;br&gt;
    hits = 0&lt;br&gt;
    while n % 2 == 0:&lt;br&gt;
        hits += 1&lt;br&gt;
        n = n // 2&lt;br&gt;
    print("...%d time(s), adding [2,%d]" % (hits, hits))&lt;br&gt;
    sumsPrimes.append([2,hits])&lt;br&gt;
for i in range(3,int(math.sqrt(n))+1,2):&lt;br&gt;
    if n % i == 0:&lt;br&gt;
        print("found prime %d--" % i)&lt;br&gt;
        hits = 0&lt;br&gt;
        while n % i == 0:&lt;br&gt;
            hits += 1&lt;br&gt;
            n = n // i&lt;br&gt;
        print("...%d time(s), adding [%d,%d]" % (hits, i, hits))&lt;br&gt;
        sumsPrimes.append([i,hits])&lt;br&gt;
if n &amp;gt; 2:&lt;br&gt;
    print("found prime %d--" % n)&lt;br&gt;
    print("...1 time, adding [%d,1]" % n)&lt;br&gt;
    sumsPrimes.append([n,1])&lt;br&gt;
print("--sumsPrimes:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print("getting numberOfNumbers' primes...")&lt;br&gt;
numberOfNumbersPrimes = []&lt;br&gt;
n = numberOfNumbers&lt;br&gt;
if n % 2 == 0:&lt;br&gt;
    print("found prime 2--")&lt;br&gt;
    hits = 0&lt;br&gt;
    while n % 2 == 0:&lt;br&gt;
        hits += 1&lt;br&gt;
        n = n // 2&lt;br&gt;
    print("...%d time(s), adding [2,%d]" % (hits, hits))&lt;br&gt;
    numberOfNumbersPrimes.append([2,hits])&lt;br&gt;
for i in range(3,int(math.sqrt(n))+1,2):&lt;br&gt;
    if n % i == 0:&lt;br&gt;
        print("found prime %d--" % i)&lt;br&gt;
        hits = 0&lt;br&gt;
        while n % i == 0:&lt;br&gt;
            hits += 1&lt;br&gt;
            n = n // i&lt;br&gt;
        print("...%d time(s), adding [%d,%d]" % (hits, i, hits))&lt;br&gt;
        numberOfNumbersPrimes.append([i,hits])&lt;br&gt;
print("found prime %d--" % n)&lt;br&gt;
if n &amp;gt; 2:&lt;br&gt;
    print("...1 time, adding [%d,1]" % n)&lt;br&gt;
    numberOfNumbersPrimes.append([n,1])&lt;br&gt;
print("--sumsPrimes and")&lt;br&gt;
print("  numberOfNumbersPrimes are:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print(numberOfNumbersPrimes)&lt;br&gt;
print("Scale = %d" % maxScale)&lt;br&gt;
print("reducing...")&lt;br&gt;
n = 0&lt;br&gt;
while(len(sumsPrimes) &amp;gt; n):&lt;br&gt;
    print("in outer while")&lt;br&gt;
    m = 0&lt;br&gt;
    while(len(numberOfNumbersPrimes) &amp;gt; m):&lt;br&gt;
        if(sumsPrimes[n][0] == numberOfNumbersPrimes[m][0]):&lt;br&gt;
            if(sumsPrimes[n][1] == numberOfNumbersPrimes[m][1]):&lt;br&gt;
                val = sumsPrimes.pop(n)&lt;br&gt;
                n -= 1&lt;br&gt;
                val = numberOfNumbersPrimes.pop(m)&lt;br&gt;
                m -= 1&lt;br&gt;
                break&lt;br&gt;
            elif(sumsPrimes[n][1] &amp;gt; numberOfNumbersPrimes[m][1]):&lt;br&gt;
                sumsPrimes[n][1] -= numberOfNumbersPrimes[m][1]&lt;br&gt;
                val = numberOfNumbersPrimes.pop(m)&lt;br&gt;
                m -= 1&lt;br&gt;
                break&lt;br&gt;
            elif(sumsPrimes[n][1] &amp;lt; numberOfNumbersPrimes[m][1]):&lt;br&gt;
                numberOfNumbersPrimes[m][1] -= sumsPrimes[n][1]&lt;br&gt;
                val = sumsPrimes.pop(n)&lt;br&gt;
                n -= 1&lt;br&gt;
        m += 1&lt;br&gt;
    n += 1&lt;br&gt;
print("--after reducing,")&lt;br&gt;
print("sumsPrimes and")&lt;br&gt;
print("numberOfNumbersPrimes are:")&lt;br&gt;
print(sumsPrimes)&lt;br&gt;
print(numberOfNumbersPrimes)&lt;br&gt;
print("Scale = %d" % maxScale)&lt;br&gt;
allTwosOrFives = True&lt;br&gt;
for ar in numberOfNumbersPrimes:&lt;br&gt;
    if ar[0] != 2 and ar[0] != 5:&lt;br&gt;
        allTwosOrFives = False&lt;br&gt;
        break&lt;/p&gt;

&lt;h1&gt;
  
  
  todo handle "0" ???
&lt;/h1&gt;

&lt;p&gt;if allTwosOrFives == True:&lt;br&gt;
    print("sum = %d" % sum)&lt;br&gt;
    print("numberOfNumbers = %d" % numberOfNumbers)&lt;br&gt;
    print("maxScale = %d" % maxScale)&lt;br&gt;
    print("sum/numberOfNumbers = %d" % (sum/numberOfNumbers))&lt;br&gt;
    print("10*&lt;em&gt;maxScale = %d" % 10&lt;/em&gt;&lt;em&gt;-maxScale)&lt;br&gt;
    res = sum/numberOfNumbers * 10&lt;/em&gt;&lt;em&gt;-maxScale&lt;br&gt;
    print("ave = %f" % res)&lt;br&gt;
else:&lt;br&gt;
    print("denominator is not a product of only 2's and 5's")&lt;br&gt;
    N = 1&lt;br&gt;
    for ar in sumsPrimes:&lt;br&gt;
        N *= ar[0]&lt;/em&gt;&lt;em&gt;ar[1]&lt;br&gt;
    D = 1&lt;br&gt;
    for ar in numberOfNumbersPrimes:&lt;br&gt;
        D *= ar[0]&lt;/em&gt;*ar[1]&lt;br&gt;
    intRes = int(N/D)&lt;br&gt;
    remRes = N%D&lt;br&gt;
    print("ave = %d %d/%d" % (intRes, remRes, D))&lt;br&gt;
jillnatale@Jills-MacBook-Air ~ % &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
