Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код пайтон. Почему 8*2 = 88?

Рада Рафиловна Магзумова Ученик (91), на голосовании 3 месяца назад
у меня есть код одного проэкта, но он большой поэтомудам часть которая очень похожа
 from tinter import *
testtk = Tk()
df = Entry(testtk)
df.pack()
def test():
int(df.get())
time.sleep(5)
lk = df.get()
int(lk)
print(lk * 2)
testb = Button(testtk,text='ff',command=test)
testb.pack()
testtk.mainloop()
если я напишу в поле ентри допустим 2 то получу 22
Голосование за лучший ответ
/bin/laden Искусственный Интеллект (112165) 4 месяца назад
потому что lk это строка
Рада Рафиловна МагзумоваУченик (91) 4 месяца назад
и как это решить
/bin/laden Искусственный Интеллект (112165) Рада Рафиловна Магзумова, преобразовать в число, очевидно
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (262381) 4 месяца назад
  
def test():
try:
value = int(df.get())
time.sleep(5)
lk = int(df.get())
print(lk * 2)
except ValueError:
print("Введите целое число!")

testb = Button(testtk, text='ff', command=test)
testb.pack()

Celtic Hammer Мудрец (16430) 4 месяца назад
Про типы данных слыхал? Из 8*2 получится 16 только если 8 имеет числовой тип (int, float)
Юрий Семыкин Искусственный Интеллект (203557) 4 месяца назад
Неправда ваша: '8'*2='88', но 8*2=16.
Кстати и '1'+'1'='11', но 1+1=2
В питоне ещё ничего..., вот в 1С
"1"+1="11", а 1+"1"=2
Sergio 2.1 Оракул (66061) 4 месяца назад
В функции test() вы получаете значение из поля ввода с помощью df.get(). Это возвращает строку.

Хотя вы пытаетесь преобразовать это значение в целое число с помощью int(df.get()), вы не сохраняете результат этого преобразования.

Затем вы снова получаете значение из поля ввода и сохраняете его в lk, но это опять строка.

Когда вы выполняете lk * 2, Python интерпретирует это как повторение строки дважды, а не как умножение числа.

Вот исправленная версия вашего кода:
 from tkinter import * 
import time

testtk = Tk()
df = Entry(testtk)
df.pack()

def test():
lk = int(df.get()) # Преобразуем введенное значение в целое число
time.sleep(5)
result = lk * 2 # Умножаем число на 2
print(result) # Выводим результат

testb = Button(testtk, text='ff', command=test)
testb.pack()
testtk.mainloop()
Похожие вопросы