Форум сайта python.su
294
whiteплохая идея, переименйте функцию от греха подальше? например? на write_file
def file()
def file(): .... text.write(str(name.name)+ " " +str(name.price) +" " + str(name.ib)+ " " + "\n") ...
[code python][/code]
Офлайн
0
PEHDOM
конкатенация строк плохо, используйте format(), join(), или f-строки
что такое name.name, name.price, name.ib? откуда ваша функция знает что такие объекты существует? в вашем коде ничего такого нет.
class Data(): def __init__ (self, name, price, ib): self.name = name self.price = price self.ib = ib def file(): ## Записываем данные в файл text ## text = open('text.txt', 'a') text.write(str(name.name)+ " " +str(name.price) +" "+ str(name.ib)+ " " + "\n") text.close() while 1==1: name = input("Имя: ", ) price = input("Цена: ", ) ib = id(name) name = Data(name, price, ib) file()
from tkinter import * import tkinter as tk class Data(): def __init__(self, name, price, ib): self.name = name self.price = price self.ib = ib def vvod_data(): intiker = intik.get() inprice = inpri.get() try: ## Делаем проверку на числовой ввод в Entry (т.е. если будут в строку вводится не цифры, пишет fault## inprice = float(inprice) ib = 123 name = str(intiker) price =str(inprice) name = Data(name, price, ib) wrfile() except: print("fault") def wrfile(): ## Записываем в файл данные ## text = open('Base.txt', 'a') text.write(str(name.name)+ " " +str(name.price) +" " + str(name.ib)+ " " + "\n") text.close()
ib = 123 name = str(intiker) price =str(inprice) name = Data(name, price, ib)
def vvod_data(): intiker = intik.get() inprice = inpri.get() try: ## Делаем проверку на числовой ввод в Entry (т.е. если будут в строку вводится не цифры, пишет fault## inprice = float(inprice) ib = 123 name = str(intiker) price =str(inprice) wrfile(name, price, ib) except: print("fault") def wrfile(name, price, ib): ## Записываем в файл данные ## text = open('Base.txt', 'a') text.write(str(name)+ " " +str(price) +" " + str(ib)+ " " + "\n") text.close()
Отредактировано white (Май 9, 2020 13:15:57)
Офлайн
294
whiteнет, этими строчами вы создаете обьект типа Data и связываете с переменной name. Но ваша переменная name живет ровно до тех пор пока работает функция vvod_data(). как только функция завершает рабоу, переменная name перестает существать.
этими строчками мы создаем переменную (не знаю как ее правильно назвать) в классе Data()
whiteвам нужно почитать что такое области видимости, https://python-scripts.com/scope
Почему то в первом случае работает, во втором нет?!
whiteєто не выход из ситуации, а правильне решение. ваша функция не долна знать что сущетсвтуют гдето какието еще обьекты.
я понимаю что можно выйти из ситуации вот так:
whiteконкатенауия строк тоесть сложение. В пайтоне строки неизменяемые, и когда вы проводите сложение каждый раз создаеться новый обьект. в случаях подобных ващему лучше использовать мктод format()
Не совсем понял, то вы имеете ввиду, в связи со своей не опытностью.
[code python][/code]
Офлайн
44
white вам стоит прочитать что то из профлитиратуры это будет для вас более продуктивно чем вести что то вроде личной странички на форуме (спрашивать про не понятные моменты это нормально но мне кажется не стоит правращать это в кашу)
зы рекомендую Лутца (это по большому счету единственное что читалось мной по python да объем большой но лучше изучить это один раз чем несколько раз в разных книгах)
там есть ответы на большинство ваших вопросов но это только начало (если че мопед не мой) я вот все еще в начале
ззы ну это конечно не более чем как ИМХО
и вставьте ссылку на его url Отредактировано AD0DE412 (Май 10, 2020 21:30:34)
Офлайн
0
Все еще раз огромное спасибо!
Попробую почитать Лутца, но мне теория очень плохо дается. На практике как то нагляднее
Офлайн
568
white
Камрад! Не бывает практики без теории. Никогда. Не бывает. Наплюй в рот тому кто говорит, что бывает.
Особенно не бывает в информатике. Можно быть гинекологом от бога, ковырять в нутрях по зову души - чисто интуитивно, но писать программы так не выйдет.
Офлайн