Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.11.2020
Сообщений: 2

Перезапись в файл txt

08.11.2020, 05:58. Показов 2357. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите пожалуйста
Я написал код АТМ, но мне нужно сделать перезапись в файл после того как я вывел (снял) деньги, прошу вас помогите сижу уже пару дней и пока что ничего не получилось. В файле "another_text.txt" у меня запись 5000
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import sys
 
 
class Users:
 
    def __init__(self, card="another_text.txt", pin="4221"):
        self.pin = pin
        self.card = card
 
 
 
class bank(Users):
 
    def bankomat(self):
        code = input("Введите пин код: \n")
        if code == self.pin:
            print("Вас вітає банк!")
        elif code != self.pin:
            print(" Проверьте пин код")
 
    def getmenu(self):
        menu = input("Выберите функции (баланс, снять деньги, выход): ")
        return menu
 
    def Balance(self):
        menu = self.getmenu()
        if menu == "баланс":
            my = open(self.card)
            read = my.readline()
            integer = int(read)
            print("Ваш баланс составляет: ", + integer)
 
 
    def Exit(self):
        menu = self.getmenu()
        if menu == "выход":
            sys.exit()
 
 
class Case(bank):
 
    def withdraw(self):
 
 
    #    dct = {}
          menu = self.getmenu
          if menu == "снять деньги":
    #       dct = {}
    #        with open(self.card, "w+") as f:
    #            for i in f.readline():
    #                for j in i:
    #                    dct[j] = j
 
        summ = int(input("Введите сумму которую хотите снять: "))
 
        if summ < dct:
            print("Вы вывели : ", + summ, "\n", "У вас на счёту: ", + dct - summ)
        else:
            print("Вам доступно: ", + self.card)
 
 
a = bank()
a.bankomat()
a.Balance()
a.Exit()
b = Case()
b.withdraw()
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2020, 05:58
Ответы с готовыми решениями:

Перезапись файла .txt
Обновление темы про таблицу. Вот такой код работает, но каждый раз перезаписывает результат. Что нужно сделать, чтобы он...

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt
В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt

Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово
Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово. Функцию писать не...

6
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
08.11.2020, 09:59
У тебя ничего не считывается, ведь ты открыл файл на запись, перезаписывая старые данные. После перезаписи файл пустой.

Добавлено через 2 минуты
Для чтения данных есть режим "r" (или вообще можно опустить указание режима).
0
0 / 0 / 0
Регистрация: 08.11.2020
Сообщений: 2
08.11.2020, 12:15  [ТС]
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
У тебя ничего не считывается, ведь ты открыл файл на запись, перезаписывая старые данные. После перезаписи файл пустой.

Добавлено через 2 минуты
Для чтения данных есть режим "r" (или вообще можно опустить указание режима).
Мне нужно сначала открыть файл для чтения, а потом под строкой написать запись в файл?
Python
1
2
        if summ < dct:
            print("Вы вывели : ", + summ, "\n", "У вас на счёту: ", + dct - summ)
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
08.11.2020, 14:09
Открыть файл для чтения, считать данные, закрыть файл, открыть файл для записи, записать данные, закрыть файл.
1
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,293
08.11.2020, 16:13
LordNightWolf1, у вас честно говоря все через одно место написано. пользователь не должен наследоваться от банка, банк должен хранить пользователей, при входе проверять пин и работать с его счетом. счет должен быть у пользователя. касса тоже не имеет отношения к банку. это независимый класс. касса может быть в магазине или еще где то. если вы уже работаете с классами то используйте модуль pickle. у вас тогда каждый пользователь будет хранить свои данные а каждый банк свои.
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
08.11.2020, 16:35
LordNightWolf1, а задача-то в чем?
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,293
08.11.2020, 18:50
Лучший ответ Сообщение было отмечено LordNightWolf1 как решение

Решение

LordNightWolf1,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import sys
import pickle
 
 
class Users:
 
    def __init__(self, name, pin, balance = 0):
        self.name = name
        self.pin = pin
        self.balance = balance
 
    def add_money(self, money):
        self.balance += money
        return f'зачислено {money}, баланс - {self.info()}'
 
    def get_money(self, money):
        if (self.balance - money) >= 0:
            self.balance -= money
            return f'остаток - {self.info()}'
        return 'Недостаточно средств'
 
    def info(self):
        return self.balance
 
    def __str__(self):
        return f'{self.card}, {self.balance}'
 
class Bank():
    
    def __init__(self, name):
        self.name = name
        try:
            with open(name, 'rb') as f:
                self.user_data = pickle.load(f)
        except:
            self.user_data = {}
 
    def authorization(self, user):
        return self.user_data.get(user)
 
    def update_data(self):
        # функция перезаписывает данные 
        with open(self.name, 'wb') as f:
            pickle.dump(self.user_data, f) 
 
    def add_user(self, name, user):
        # добавляем клиента
        self.user_data[name] = user
        # обновляем запись
        self.update_data()
       
 
class Case():
    
    def __init__(self, bank, name):
        self.bank = bank   
        self.name = name
 
    def menu(self):
        user = self.bank.authorization(self.name) 
        if user:
            print("Вас вітає банк!")
            pin = input('Введите пин код: ')
            while True:
                if user.pin != pin:
                    print('pin неверный')
                    pin = int(input('Введите пин код: '))
                    continue
                menu = input("Выберите функции (баланс, снять деньги, зачислить, выход): ")
                if menu == "баланс":
                    print(user.info())
                elif menu == "снять деньги":
                    summ = int(input("Введите сумму которую хотите снять: "))
                    print(user.get_money(summ))
                elif menu == 'зачислить':
                    summ = int(input("Введите сумму : "))
                    print(user.add_money(summ))
                elif menu == "выход": 
                    break
                self.bank.update_data()
            else:
                print('не зарегистрирован')
              
                
        
 
if __name__ == '__main__':                
    # создаем банк        
    bank = Bank('МИБ')
    while True:
        a = input('добавить клиента - 1, работать с кассой - 2, выход - 3 >: ')
        if a == '1':
           name, pin = [input(f'{i}:> ') for i in ('Имя', 'желаемый пин')]
           bank.add_user(name, Users(name, pin))
        elif a == '2':
            num = input('Имя: ')  
            case = Case(bank, num)
            case.menu()
        elif a == '3': sys.exit()
не проверок на всякие нюансы но это уж как нибудь сами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2020, 18:50
Помогаю со студенческими работами здесь

Из файла 1.txt взять n первых и n последних строк, и сохранить их как файл 2.txt
Подскажите пожалуйста, как из файла 1.txt взять n первых и n последних строк, и сохранить их как файл 2.txt. Питон почти не знаю, но вот...

Перезапись отдельно одной строки в CSV файл
Возможно ли вообще такое - записать одну строку в фаил? Пример: у меня CSV фаил 1000 строк. Я хочу внести изменения в сотую строку. Как...

Чтение файла xls и перезапись данных в файл txt
Задача Файл xls в нем данные (текст и числа), алгорит читает файл xls и перезаписывает данные в файл txt

Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные
Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные.

Дан файл вещественных чисел a1.txt. Переписать в файл а2.txt все ненулевые элементы файла а1.txt.
Дан файл вещественных чисел a1.txt. Переписать в файл а2.txt все ненулевые элементы файла а1.txt.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru