Select Git revision
Forked from
SOFT Core / SOFT 161 and 162 / Exploratory Testing
1 commit behind the upstream repository.
Brady James Garvin authored
main.py 1.68 KiB
from math import inf
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import NumericProperty, StringProperty, ListProperty
class Field(BoxLayout):
index = NumericProperty()
entry = StringProperty()
class Fields(BoxLayout):
entries = ListProperty([]) # elements are strings (some may not be valid numbers)
def rebuild(self):
while len(self.children) > len(self.entries):
self.remove_widget(self.children[0])
while len(self.children) < len(self.entries):
self.add_widget(Field(index=len(self.children)))
def on_entries(self, _, __):
self.rebuild()
for field, entry in zip(reversed(self.children), self.entries):
field.entry = entry
class SmallestPositiveApp(App):
entries = ListProperty([]) # elements are strings (some may not be valid numbers)
result = NumericProperty(inf)
def add_field(self):
self.entries.append('')
def remove_field(self):
try:
self.entries.pop()
except IndexError:
pass
@staticmethod
def _find_smallest_positive(entries):
smallest_positive = inf
for entry in entries:
try:
value = float(entry)
if 0 < value < smallest_positive:
smallest_positive = value
except ValueError:
pass
return smallest_positive
def on_entries(self, _, __):
self.result = SmallestPositiveApp._find_smallest_positive(self.entries)
def set_entry(self, index, entry):
self.entries[index] = entry
if __name__ == '__main__':
app = SmallestPositiveApp()
app.run()