Ошибка в kivy( TypeError: can't multiply sequence by non-int of type 'str')
Код Python:
...
def get(a,b,c,d):
float(a)
float(b)
float(c)
float(d)
Ans = str((a*c+b*d)/(c+d))
return {'C':Ans}
class Cont(GridLayout):
def cal(self):
i1 = self.c1.text
i2 = self.c2.text
i3 = self.m1.text
i4 = self.m2.text
gett = get(i1,i2,i3,i4)
if self.c.text == '?':
print(gett.get('C'))
class App(App):
def build(self):
return Cont()
...
Код kivy:
<Cont>:
rows: 2
c: C
c1: C1
c2: C2
m1: M1
m2: M2
BoxLayout:
orientation: 'vertical'
padding: [70]
spacing: 100
TextInput
id: C
size_hint: (1, .1)
font_size: (100)
multiline: False
TextInput
id: C1
size_hint: (1, .1)
font_size: (100)
multiline: False
TextInput
id: C2
size_hint: (1, .1)
font_size: (100)
multiline: False
TextInput
id: M1
size_hint: (1, .1)
font_size: (100)
multiline: False
TextInput
id: M2
size_hint: (1, .1)
font_size: (100)
multiline: False
BoxLayout:
size_hint: (1,.2)
padding: [40,0,40,20]
Button:
text: 'test'
on_press: root.cal()
При нажатии на кнопку выдаёт ошибку:

Долго тупил и не могу понять, как можно это исправить?(я просто язык *.kv начал изучать, раньше без него писал)
Можете помочь, надо чтоб из TextInput'ов, значания которых вводит пользователь, заполнялось вместо знака '?' на выходе записывался ответ(переменная Ans).
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
Исправьте
float(a)
float(b)
float(c)
float(d)
на
a = float(a)
b = float(b)
c = float(c)
d = float(d)
float сам по себе не меняет тип той переменной, которую вы ему скармливаете. Он просто возвращает новый объект соответствующего типа. И если вы это возвращаемое значение никуда не присвоите, то оно просто пропадёт.
Поэтому код вида
float(x)
по сути не делает вообще ничего, он никак не меняет состояние чего-либо в вашей программе.