Найти - Пользователи
Полная версия: Хьюстон, у нас проблемы.
Начало » Python для новичков » Хьюстон, у нас проблемы.
1 2 3 4
El_Tejon
from typing import List, Any

def all_the_same(elements: List) -> bool:
# your code here
return len(set(elements)) <= 1

Объясните пжлст, что это за конструкция “(elements: List) -> bool:” и ее функционал?
PEHDOM
это аннотация типов, появилась, в версии 3.6, если мне не изменяет память.
подробнее читайт тут: https://devpractice.ru/python-lesson-18-annotations/
более развернуто тут https://habr.com/ru/company/lamoda/blog/432656/
AD0DE412
прикольно мне почему то не встречалось (ну у меня и опыта конечно так)

это что можно объявить переменную без значения

.. и да а если указываешь тип то это что то вроде строгой типизации но не совсем (хотя нет в питоне типизация строгая тоесть получается эээ не денамическая строгая типизация 0_0)
блин заморочено как .. а для чего все это так в чем смысл?
py.user.next
AD0DE412
хотя нет в питоне типизация строгая тоесть получается эээ не денамическая строгая типизация
Динамичность типизации и строгость типизации - никак не связанные понятия. В питоне типизация и строгая, и динамическая.
PEHDOM
AD0DE412
а для чего все это так в чем смысл?
ну как минимум, ИМХО, для удобства чтения кода, ты сразу видишь какого типа аргументы должны подаваться, и какого вернуться вместо выяитывания докстрингов, котороых может и не быть.
+ не нужно заморачиваться с проверкой типов, и выискивать долго в дебагере, где же сцуко, инт превратился в стр, оно само выдаст ошибку если тип не соответвует заявленому в аннотации.
ВОбщем пытаються скрестить ежа с ужом статическую и динамическую типизацию, У динамической типизации есть как свои плюсы, так и минусы, вот от минусов пытаются избавиться, типа чтоб и нах@й сесть и рыбку сьесть..
AD0DE412
PEHDOM
вот от минусов пытаются избавиться
ага создовая другие минусы … ладно не мне судить люди поумнее и поопытние меня придумали все это, но все ровно как то … эээ не превычно
спасиб

PEHDOM
AD0DE412
ага создовая другие минусы…но все ровно как то … эээ не превычн
ну эта штука вроде как опциональна, тоесть можно писать и без аннотаций, “по старому”, и ничего за это не будет.
white
Добрый день!
Не хочу создавать новую тему, к тому же название этой 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]

не пинайте сильно, это 2-ай попытка в написание чего либо.
doza_and
white
не пинайте сильно,
Не!!! Будем сильно пинать. Вторая попытка а уже компилировать!!! Не надо этого делать.
white
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()

Почему ругается на переменную С33?
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

Разобрался
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB