Форум сайта python.su
0
from typing import List, Any
def all_the_same(elements: List) -> bool:
# your code here
return len(set(elements)) <= 1
Объясните пжлст, что это за конструкция “(elements: List) -> bool:” и ее функционал?
Офлайн
294
это аннотация типов, появилась, в версии 3.6, если мне не изменяет память.
подробнее читайт тут: https://devpractice.ru/python-lesson-18-annotations/
более развернуто тут https://habr.com/ru/company/lamoda/blog/432656/
[code python][/code]
Отредактировано PEHDOM (Апрель 9, 2020 19:45:33)
Офлайн
44
прикольно мне почему то не встречалось (ну у меня и опыта конечно так)
это что можно объявить переменную без значения
.. и да а если указываешь тип то это что то вроде строгой типизации но не совсем (хотя нет в питоне типизация строгая тоесть получается эээ не денамическая строгая типизация 0_0)
блин заморочено как .. а для чего все это так в чем смысл?
и вставьте ссылку на его url Отредактировано AD0DE412 (Апрель 9, 2020 21:48:00)
Офлайн
857
AD0DE412Динамичность типизации и строгость типизации - никак не связанные понятия. В питоне типизация и строгая, и динамическая.
хотя нет в питоне типизация строгая тоесть получается эээ не денамическая строгая типизация
Офлайн
294
AD0DE412ну как минимум, ИМХО, для удобства чтения кода, ты сразу видишь какого типа аргументы должны подаваться, и какого вернуться вместо выяитывания докстрингов, котороых может и не быть.
а для чего все это так в чем смысл?
[code python][/code]
Офлайн
44
PEHDOMага создовая другие минусы … ладно не мне судить люди поумнее и поопытние меня придумали все это, но все ровно как то … эээ не превычно
вот от минусов пытаются избавиться
и вставьте ссылку на его url Офлайн
294
AD0DE412ну эта штука вроде как опциональна, тоесть можно писать и без аннотаций, “по старому”, и ничего за это не будет.
ага создовая другие минусы…но все ровно как то … эээ не превычн
[code python][/code]
Офлайн
0
Добрый день!
Не хочу создавать новую тему, к тому же название этой 100% подходит.
Проблема такая:
Не компилируется в exe. Пишу в командной строке pyinstaller qwer.py (сам фаил находится в корне диска С)
C:\>pyinstaller qwer.py
894 INFO: PyInstaller: 3.6
894 INFO: Python: 3.6.0
909 INFO: Platform: Windows-10-10.0.17763-SP0
Traceback (most recent call last):
File “C:\Users\user\AppData\Local\Programs\Python\Python36\Scripts\pyinstaller-script.py”, line 11, in <module>
load_entry_point('PyInstaller==3.6', ‘console_scripts’, ‘pyinstaller’)()
File “c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\__main__.py”, line 112, in run
spec_file = run_makespec(**vars(args))
File “c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\__main__.py”, line 58, in run_makespec
spec_file = PyInstaller.building.makespec.main(filenames, **opts)
File “c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\building\makespec.py”, line 456, in main
with open_file(specfnm, ‘w’, encoding='utf-8') as specfile:
PermissionError: Permission denied: ‘C:\\qwer.spec’
Код программы:
[code python]
from tkinter import *
from tkinter import messagebox
d = ' '
def transfer():
global d
C11 = C1.get()
C55 = C5.get()
A11 = A1.get()
A55 = A5.get()
A33 = A3.get()
try:
C11 = float(C11)
C55 = float(C55)
A11 = float(A11)
A55 = float(A55)
A33 = float(A33)
if A11 != A55:
d=C11+(A33-A11)*((C11-C55)/(A11-A55))
label6 = Label(root, width=20, font=("Ubunte", 10), text=d)
label6.grid(row=7, columnspan=2)
else:
messagebox.showerror("Ошибка", "Ошибка ввода данных")
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
def telo():
global C1
global C5
global A1
global A5
global A3
global root
root = Tk()
root.geometry('350x200+0+0') #размер окна и координаты
root.title('Расчет') #название окна
label0 = Label(root, width=30, font=("Ubunte", 10), text='РАСЧЕТ')
label0.grid(row=0, columnspan=2)
label1 = Label(root, width=20, font=("Ubunte", 10), text='Мин. шкалы')
label1.grid(row=1, column=0)
C1 = Entry(root, width=10)
C1.grid(row=1, column=1)
label2 = Label(root, width=20, font=("Ubunte", 10), text='Макс. шкалы')
label2.grid(row=2, column=0)
C5 = Entry(root, width=10)
C5.grid(row=2, column=1)
label3 = Label(root, width=20, font=("Ubunte", 10), text='Мин.')
label3.grid(row=3, column=0)
A1 = Entry(root, width=10)
A1.grid(row=3, column=1)
label4 = Label(root, width=20, font=("Ubunte", 10), text='Макс.')
label4.grid(row=4, column=0)
A5 = Entry(root, width=10)
A5.grid(row=4, column=1)
label5 = Label(root, width=20, font=("Ubunte", 10), text='Изм A3')
label5.grid(row=5, column=0)
A3 = Entry(root, width=10)
A3.grid(row=5, column=1)
button1 = Button(root, text="Решение", font=("Ubunte", 10), command=transfer)
button1.grid(row=6, columnspan=2, sticky="ew")
label6 = Label(root, width=40, font=("Ubunte", 10), text=d)
label6.grid(row=7, columnspan=2)
telo()
root.mainloop()
[/code]
Отредактировано white (Апрель 15, 2020 09:29:00)
Офлайн
253
whiteНе!!! Будем сильно пинать. Вторая попытка а уже компилировать!!! Не надо этого делать.
не пинайте сильно,
Отредактировано doza_and (Апрель 15, 2020 09:56:19)
Офлайн
0
doza_andС той проблемой разобрался.
from tkinter import * from PIL import ImageTk, Image from tkinter import messagebox d = ' erte ' def transfer(): global d C11 = C1.get() С33 = C3.get() C55 = C5.get() A11 = A1.get() A55 = A5.get() A33 = A3.get() try: C11 = float(C11) C33 = float(C33) C55 = float(C55) A11 = float(A11) A55 = float(A55) A33 = float(A33) if A11 != A55: d=C11+(A33-A11)*((C11-C55)/(A11-A55)) label6 = Label(window, width=20, font=("Ubunte", 10), text=d) label6.grid(row=13, columnspan=3) else: messagebox.showerror("Ошибка", "Ошибка ввода данных") except ValueError: messagebox.showerror("Ошибка", "Должно быть введено число") global C1 global C3 global C5 global A1 global A5 global A3 global window window = Tk() window.title("Join") window.geometry("199x405") window.configure(background = "white") path = "q.jpg" img = ImageTk.PhotoImage(Image.open("C:\\qwe\\q.jpg")) panel = Label(window, image = img) panel.grid(rowspan=12, column=1) A1 = Entry(window, width=10) #4 ма A1.grid(row=0, column=0) A3 = Entry(window, width=10) # изм A3.grid(row=6, column=0) A5 = Entry(window, width=10) #20 ма A5.grid(row=11, column=0) C1 = Entry(window, width=10) #начало шкалы 0 C1.grid(row=0, column=2) C3 = Entry(window, width=10) #изм C3.grid(row=6, column=2) C5 = Entry(window, width=10) #конец шкалы 100 C5.grid(row=11, column=2) button1 = Button(window, text="Решение", font=("Ubunte", 10), command=transfer) button1.grid(row=12, columnspan=3, sticky="ew") window.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py”, line 1699, in __call__
return self.func(*args)
File “C:\Users\user\Desktop\Пересчет 4-20 рабоча.py”, line 19, in transfer
C33 = float(C33)
UnboundLocalError: local variable ‘C33’ referenced before assignment
Отредактировано white (Апрель 15, 2020 15:26:41)
Офлайн