csci1913/lab2.py

34 lines
1 KiB
Python
Raw Normal View History

2018-01-29 23:37:09 +00:00
class Zillion(object):
def __init__(self, digits):
if any([c not in "012456789, " for c in digits]): raise RuntimeError("Contains invalid characters.")
self.digits = [int(c) for c in digits if c.isdigit()]
if not self.digits: raise RuntimeError("Contains no digits.")
def increment(self):
pos = len(self.digits)
while True:
pos -= 1
self.digits[pos] += 1
if self.digits[pos] == 10:
if pos == 0:
self.digits = [1, 0] + self.digits[1:]
break
self.digits[pos] = 0
else: break
def isZero(self):
return all([d == 0 for d in self.digits])
def __str__(self):
"""
In Python, it's customary to use the __str__ operator overloader to overload the str()
function, rather than using a toString() function, which is common in languages that
don't support operator overloading, such as Java.
See https://docs.python.org/2/reference/datamodel.html#object.__str__ for more details.
"""
return "".join(map(str, self.digits))
def toString(self):
return str(self)
z = Zillion('9')
print z.isZero()
z.increment()
print z, z.digits