Yanlax
@Yanlax

Что написать в except ,чтоб программа не вылетала при неправильном вводе?

from kivy.app import App
import kivy
from kivy.uix.button import Button
from kivy.uix.codeinput import CodeInput
from pygments.lexers import HtmlLexer
from kivy.core.window import Window
from kivy.config import Config
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label

Config.set('graphics','resizable',0);
Window.size = (400, 500);


class CalculatorApp(App):
	def update_label(self,):
		self.lbl.text = self.formula

	def clear(self, instance):
		self.formula = "0"
		self.update_label()

	def add_number(self, instance):
		if( self.formula == "0" ):
			self.formula = ""

		self.formula += str(instance.text)
		self.update_label()

	def add_operation(self, instance):
		if( str(instance.text).lower()) == "x":
			self.formula += "*"
		else:
			self.formula += str(instance.text)

		self.update_label()

	def calc_result(self, instance):
		self.lbl.text = str(eval(self.lbl.text))
		self.formula = "0"

	def build(self):
		try:
			self.formula = "0"
			box = BoxLayout(orientation = 'vertical', padding=25)
			layout = GridLayout(cols= 4, spacing=3,size_hint= (1,.6))

			self.lbl = Label(text='0', font_size= 50, halign='right', valign='center', size_hint = (1, .4), text_size=(400- 50, 500 * .4 - 50))
			box.add_widget( self.lbl)

			layout.add_widget(Button(background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(background_normal='', background_color = [.100,.100,.100,1]) )		
			layout.add_widget(Button(text='C', on_press = self.clear,background_normal='', background_color = [.100,.100,.100,1]) )


			layout.add_widget(Button(text='7', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='8', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='9', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='X', on_press = self.add_operation,background_normal='', background_color = [.100,.100,.100,1]) )

			layout.add_widget(Button(text='4', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='5', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='6', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='-', on_press = self.add_operation,background_normal='', background_color = [.100,.100,.100,1]) )

			layout.add_widget(Button(text='1', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='2', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='3', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='+', on_press = self.add_operation,background_normal='', background_color = [.100,.100,.100,1]) )

			layout.add_widget(Button(text='/', on_press = self.add_operation,background_normal='', background_color = [.100,.100,.100,1] ) )
			layout.add_widget(Button(text='0', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='.', on_press = self.add_number,background_normal='', background_color = [.100,.100,.100,1]) )
			layout.add_widget(Button(text='=', on_press = self.calc_result,background_normal='', background_color = [.100,.100,.100,1]) )

			box.add_widget( layout )
			return box
		except:


root = CalculatorApp()
root.run()
  • Вопрос задан
  • 67 просмотров
Решения вопроса 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
Программа в случае ошибки не просто упадёт, а выкинет исключение. Его надо будет поймать и обработать.

Например:

try:
  int("1")
  int("-1")
  int("+1")
  int("hello")
except ValueError as e:
  print (f"ValueError occured: {e}")


Тут случится ValueError в последнем приведении к int, использование try ... except позволит его поймать, обработать и продолжить дальнейшую работу программы.
Ответ написан
Комментировать
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
pass
Хотя так не рекомендуется делать, но такое часто встречается в стандартных библиотеках Python.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы