Aadesh Shrestha wrote: > I am currently taking challenges on codewars. > Problem: Square Every Digit > > is there a better solution than this which requires less code? > > def square_digits(num): > arr = [] > list = [] > while(num !=0): > temp = num%10 > num = num /10 > arr.insert(0, temp) > for i in arr: > > list.append( i*i) > str1 = ''.join(str(e) for e in list) > return int(str1)
Here's one which moves most of the code out of the function: # Python 2 TRANS = {ord("0") + digit: unicode(digit*digit) for digit in range(10)} def square_digits(num): return unicode(num).translate(TRANS) Negative numbers keep their leading "-" sign. Replace unicode with str for the Python 3 version. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor