aboutsummaryrefslogtreecommitdiffstats
path: root/OLD/csci1913/Python/lab2_strap012.py
blob: 511e6bfb68e38e5470a25285d755bf0edc67f643 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
class Zillion:
  def __init__(self,digits):
    self.digits = digits
    self.List = []
    self.toList()

  def toList(self):
    badBoolean=False           #Kludge
    if len(self.digits) == 0 :
      raise RuntimeError       #Cannot make a list of nothing
    for n in range (0,len(self.digits)):
      if self.digits[n] is not ',':
        if self.digits[n] is not ' ':
          try:
            self.List+=[int(self.digits[n])]
            badBoolean=True
          except ValueError:   #Non-comma character in string
            raise RuntimeError
    if badBoolean is False:    #No numbers in string
      raise RuntimeError
    else:
      return self.List


  def increment(self):
    length = len(self.List) - 1
    newList = self.List
    newList[length] += 1
    if newList[length]>=10:     #Loop to increment all 10s to 0s with carry
      for n in range (0,length):
        newList[length-n]=0
        newList[length-n-1]+=1

  def isZero(self):
    for p in range (0,len(self.List)-1):
      if self.List[p] is not 0:
        return False
    return True

  def toString(self):
    string=''
    for q in range (0,len(self.List)):
      string+=str(self.List[q])    #Make string by concatenation
    return string



#
#  TESTS. Test the class Zillion for CSci 1913 Lab 2.
#
#    James Moen
#    18 Sep 17
#
#  Every test is followed by a comment which shows what must be printed if your
#  code works correctly. It also shows how many points the test is worth.
#

try:
  z = Zillion('')
except RuntimeError:
  print('Empty string')

# It must print 'Empty string' without apostrophes. 2 points.

try:
  z = Zillion(' , ')
except RuntimeError:
  print('No digits in the string')

# It must print 'No digits in the string' without apostrophes. 2 points.

try:
  z = Zillion('1+0')
except RuntimeError:
  print('Non-digit in the string')

# It must print 'Non-digit in the string' without apostrophes. 2 points.

try:
  z = Zillion('0')
except RuntimeError:
  print('This must not be printed')

#  It must print nothing. 2 points.

print(z.isZero())    #  It must print True. 2 points.

try:
  z = Zillion('000000000')
except RuntimeError:
  print('This must not be printed')

#  It must print nothing. 2 points.

print(z.isZero())    #  It must print True. 2 points.

try:
  z = Zillion('000 000 000')
except RuntimeError:
  print('This must not be printed')

#  It must print nothing. 2 points.

print(z.isZero())    #  It must print True. 2 points.

try:
  z = Zillion('997')
except RuntimeError:
  print('This must not be printed')

#  It must print nothing.  2 points.

print(z.isZero())    #  It must print False. 2 points.

print(z.toString())  #  It must print 997. 2 points.

z.increment()

print(z.toString())  #  It must print 998. 2 points.

z.increment()

print(z.toString())  #  It must print 999. 2 points.

z.increment()

print(z.toString())  #  It must print 1000. 2 points.

try:
  z = Zillion('0 9,9 9')
except:
  print('This must not be printed')

#  It must print nothing.  3 points.

z.increment()
print(z.toString())  #  It must print 1000. 2 points.