Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2022 19:58:33

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

Здравствуйте, последние 2 недели я изучаю язык Python и tkinter
Недавно я захотел сделать desktop-приложение, которое сможет узнавать(поправьте, если не так написал) есть ли в ведёном тексте pangram, но я столкнулся с ошибкой, решение которой я не знаю. Был бы очень благодарен, если бы кто-нибудь подсказал мне решение моей проблемы
Вот код:

 from tkinter import *
root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
w = w // 2
h = h // 2
w = w - 200
h = h - 200
root.geometry('400x400+{}+{}'.format(w, h))
root.title("Панграм")
def is_pangram(phrase):
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    for char in alphabet:
        if char not in phrase:
            return False
    return True
e = Entry(root, width = 50)
e.pack()
e.insert(0,"Введите текст")
b = Button(root, text="Узнать панграм", command=is_pangram); b.pack()
root.mainloop()
А вот ошибка, которую мне выдаёт: 
Exception in Tkinter callback
Traceback (most recent call last):
  File "Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
TypeError: is_pangram() missing 1 required positional argument: 'phrase'
Вроде как нужно создать class __init__ , но я не уверен

Отредактировано dement3r (Ноя. 9, 2022 21:27:59)

Офлайн

#2 Ноя. 9, 2022 20:30:56

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

[code python]между этимим тегами вставлять код[/code]

Отредактировано xam1816 (Ноя. 9, 2022 20:31:09)

Офлайн

#3 Ноя. 9, 2022 20:34:53

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

Сейчас я добавил class __call__

 from tkinter import *
root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
w = w // 2
h = h // 2
w = w - 200
h = h - 200
root.geometry('400x400+{}+{}'.format(w, h))
root.title("Панграм")
class __call__():
    def is_pangram(phrase):
        alphabet = "abcdefghijklmnopqrstuvwxyz"
        for char in alphabet:
            if char not in phrase:
                return False
                return True
e = Entry(root, width = 50)
e.pack()
e.insert(0,"Введите текст")
b = Button(root, text="Узнать панграм", command=is_pangram); b.pack()
root.mainloop()
И у меня появилась новая ошибка, которая не распознаёт имя is_pangram:
Traceback (most recent call last):
  File "", line 26, in <module>
    b = Button(root, text="Узнать панграм", command=is_pangram); b.pack()
NameError: name 'is_pangram' is not defined

Отредактировано dement3r (Ноя. 9, 2022 20:36:46)

Офлайн

#4 Ноя. 9, 2022 20:35:26

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

xam1816
Ой, простите, пожалуйста

Офлайн

#5 Ноя. 9, 2022 21:17:48

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

Также решил попробовать без alphabet

 from tkinter import *
root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
w = w // 2
h = h // 2
w = w - 200
h = h - 200
root.geometry('400x400+{}+{}'.format(w, h))
root.title("Панграмм")
c=0
def is_pangram():
    if c in 'abcdefghijklmnopqrstuvwxyz':
        True
    else:
        False
e = Entry(root, width = 50)
e.pack()
e.insert(0,"Введите текст")
b = Button(root, text="Узнать панаграмм", command = is_pangram); b.pack()
root.mainloop()
и получилась ошибка: Exception in Tkinter callback
Traceback (most recent call last):
File “Python\Python39\lib\tkinter\__init__.py”, line 1892, in __call__
return self.func(*args)
File “”, line 13, in is_pangram
if c in ‘abcdefghijklmnopqrstuvwxyz’:
TypeError: ‘in <string>’ requires string as left operand, not int

Офлайн

#6 Ноя. 9, 2022 21:50:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

dement3r
Был бы очень благодарен, если бы кто-нибудь подсказал мне решение моей проблемы
Не надо делать всё сразу, сделай сначала просто пустое окно, которое запускается. Когда сделаешь окно, добавь к нему средства ввода и вывода текста и потестируй их. Когд сделаешь окно со средствами ввода и вывода текста, тогда добавишь в него функцию проверки текста. Так по чуть-чуть ты и придёшь к конечному результату, в котором всё будет работать.



Офлайн

#7 Ноя. 9, 2022 22:36:51

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

py.user.next
Неужели ошибка заключается только в том, что я просто поторопился?

Офлайн

#8 Ноя. 9, 2022 22:38:26

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

dement3r
Неужели ошибка заключается только в том, что я просто поторопился?
тебе нужно приложение или научиться писать программы?

Офлайн

#9 Ноя. 9, 2022 23:45:51

dement3r
Зарегистрирован: 2022-11-09
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

xam1816
Мне нужно и приложение и научиться писать, но я не знаю в чём тут ошибка. Те ошибки которые у меня вылезают, мной никак не исправятся, просто потому, что я не знаю как их исправить. Моё знание языка заканчивается на этом, вроде всё правильно, а вроде и нет. Это моё desktop-приложение, через библиотеку tkinter и я бы хотел услышать какие-нибудь советы или например, чтобы мне подсказали что я не так написал, мне нравится программировать, мне нравится исправлять ошибки, учится на них, но без совета я тут точно не справлюсь)

Офлайн

#10 Ноя. 10, 2022 09:43:03

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Ошибка в программе "Панграм"

dement3r
хотел услышать какие-нибудь советы

вход информации -> обработка информации -> выход информации.

вот ты человек, у тебя есть глаза - это вход информации,т.е ты смотришь на строку и она через глаза поступает в мозг.
в мозге обработка информации, т.е там ее крутишь, вертишь, сравниваешь, считаешь, ассоциируешь с чем-то тд., т.е изначальная информация преобразуется в другую информацию.
у тебя есть рот - это выход информации Так ты передаешь преобразованную информацию дальше. говоришь вслух ее. У другого человека ухо - это вход информации, и так далее.

так вот программа - это такая же сущность, как и человек.(или человек такая же сущность как программа).

обязательно должен быть вход для информации. У тебя есть окно где есть есть строка ввода - ок. У тебя есть кнопка(нажатие на кнопку это тоже входящая информация т.е вкл или выкл) - ок.

эта информация попавшая на вход должна передаться в обработчик. У тебя это функция - ок. На входе у нее строка -> на выходе ответ да или нет.Так информация преобразовалась в другую информацию.

теперь нужен выход информации. У тебя он где???. Ты должен вывести что-то в виде слов, или рисунков, или звуков. Т.е информацию нужно куда то передать.

Разбей свою задачу на более простую и абстрактную(т.е без уточнения, набросок с основными элементами)

Сделай окно где есть поле ввода, кнопка, поле вывода. Обработка информации будет нулевой - т.е то что ввел в строку эта же строка после нажатия на кнопку должна выйти на вывод

выложи рабочий код этого варианта

Отредактировано xam1816 (Ноя. 10, 2022 10:45:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version