Форум сайта python.su
def Perekaz(self): self.schet = open(schet + '.txt','r') self.schet.seek(0) f = self.schet.read() self.schet.seek(0) self.schet.close() self.schet = open(schet + '.txt','w') n = int(input("Введите суму для перевода: ")) f = int(f) if f > n: self.schet.write(str(int(f-n))) self.schet.seek(0) self.schet.close() else: print("У вас недостаточно средств на счету! \n") self.schet.close() return 0 # это все работает nazFaila = input("Введите номер счета для перевода: ") # делаю проверку если существует такой файл try: self.schet = open(nazFaila + '.txt','r') except Exception: print("не удалось открыть файл") else: m = self.schet.read() self.schet.close() self.schet = open(nazFaila + '.txt','w') #[b][u] когда открываю файл в режиме 'w', дальше код не выполняется почему?[/u][/b] c = int(n+m) # это не выполняется print(c) # это тоже self.schet.write(str(int(n+m))) # и вот это self.schet.close() # и это finally: return 0 # выполняется это и всё
Отредактировано FishHook (Апрель 15, 2017 13:26:18)
Офлайн
вот тут c = int(n+m)
n у вас int m - str, соответвенно n+m должно вызывать TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
но почемуто в конструкции try-except-else если исключение вызываеться в else то он не бросает еще одно исключение а просто завершает блок else. ХЗ так ли задумано, или это баг.
Надеюсь что это у вас лаборатрная или на крайний случай курсовая, потому как у меня, как у работника банка, ваш код вызывает только слезы.
[code python][/code]
Офлайн
PEHDOMВсё порождается
но почемуто в конструкции try-except-else если исключение вызываеться в else то он не бросает еще одно исключение а просто завершает блок else. ХЗ так ли задумано, или это баг.
>>> try: ... 1 ... print('try') ... except: ... 2 ... print('except') ... else: ... 1/0 ... print('else') ... finally: ... print('finally') ... 1 try finally Traceback (most recent call last): File "<stdin>", line 8, in <module> ZeroDivisionError: division by zero >>>
Офлайн
py.user.nextСоглсен, но почемуто в таком виде не порождает
Всё порождается
def test(): try: 1 print('try') except Exception: 2 print('except') else: 1+'a' print('else') finally: print('finally') return 0 >>> try finally >>> test()
[code python][/code]
Отредактировано PEHDOM (Апрель 16, 2017 09:48:41)
Офлайн
А здесь вот написано, что так и должно быть
python.org. try … except
If the finally clause executes a return or break statement, the saved exception is discarded:>>> def f():
... try:
... 1/0
... finally:
... return 42
...
>>> f()
42
Отредактировано py.user.next (Апрель 16, 2017 10:04:47)
Офлайн
py.user.nextхмм, а куда я раньше смотрел? провтыкал видать…
А здесь вот написано, что так и должно быть
[code python][/code]
Офлайн