Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071

Странное поведение

24.02.2020, 12:01. Показов 763. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть модуль, называется module.py:
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
def input(value='',mask = None, placeholder = None, maxlength = None, endkey = 'Enter'):
    text = str(value)
    stdout.write(text if mask == None else mask * len(text))
    stdout.flush()
    if not iskey(endkey):
        raise NotImplementedError(endkey);
    if placeholder != None:
        if text == '':
            stdout.write(str(placeholder)+'\r')
    f = False
    if maxlength == None:
        while True:
            key = getkey(False)
            if key:
                if key == endkey:
                    break
                elif len(key) == 1:
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += key
                    stdout.write(key if mask == None else mask)
                    stdout.flush()
                elif key == 'Tab':
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += '\t'
                    stdout.write('\t' if mask == None else mask)
                    stdout.flush()
                elif key == 'Space':
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += ' '
                    stdout.write(' ' if mask == None else mask)
                    stdout.flush()
                elif key == 'Backspace':
                    if len(text) > 0:
                        text = text[:-1]
                        if mask == None:
                            stdout.write('\b \b')
                        else:
                            stdout.write('\b'*len(mask)+' '*len(mask)+'\b'*len(mask))
                        stdout.flush()
                        if len(text) < 1:
                            if placeholder != None:
                                stdout.write(str(placeholder)+'\r')
                            f = False
    else:
        while len(text) < maxlength:
            key = getkey(False)
            if key:
                if key == endkey:
                    break
                elif len(key) == 1:
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += key
                    stdout.write(key if mask == None else mask)
                    stdout.flush()
                elif key == 'Tab':
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += '\t'
                    stdout.write('\t' if mask == None else mask)
                    stdout.flush()
                elif key == 'Space':
                    if not f:
                        if placeholder != None:
                            stdout.write(' '*len(str(placeholder))+'\r')
                        f = True
                    text += ' '
                    stdout.write(' ' if mask == None else mask)
                    stdout.flush()
                elif key == 'Backspace':
                    if len(text) > 0:
                        text = text[:-1]
                        if mask == None:
                            stdout.write('\b \b')
                        else:
                            stdout.write('\b'*len(mask)+' '*len(mask)+'\b'*len(mask))
                        stdout.flush()
                        if len(text) < 1:
                            if placeholder != None:
                                stdout.write(str(placeholder)+'\r')
                            f = False
    return text;

Не по теме:

Знаю, что функции нельзя так называть


И основная программа main.py:
Python
1
2
from module import input
input('Привет, мир!', '(Символ)', 'Введите что-нибудь')
Вывод:
Code
1
2
(Символ)(Символ)(Символ)(Символ)(Символ)(Символ)(Символ)(Символ)(Символ)(Символ)
(Символ)(Символ)
Когда я нажму ТРИ раза Backspace стирается только ДВЕ надписи "(Символ)". Первая строчка никогда не затрагивается. Как это исправить? Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.02.2020, 12:01
Ответы с готовыми решениями:

Странное поведение инкремента
почему при применении счётчика код выполняется дольше, чем при применении случайной выборки? т.е. если создать переменную и каждую...

Странное поведение getcwd()
почему запуская проект из PyCharm, без особых настроек запуска print(os.getcwd()) это: C:\Windows\system32 я бы...

Странное поведение класса
У меня есть класс: def NumberType(): def __init__(self,value): self.value = value self.methods = {} def toString(I): ...

10
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.02.2020, 13:27
Никак, вернуть курсор каретки на строку вверх нельзя.

Я уже не раз говорил про (n)curses, которая позволяет рисовать любые псевдо-графические интерфейсы и куда угодно двигать курсор.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
24.02.2020, 14:26  [ТС]
Рыжий Лис, curses не подходит для windows. А я пишу именно для него.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.02.2020, 14:28
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
не подходит для windows
windows-curses - подходит.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
24.02.2020, 14:44  [ТС]
Garry Galler, странно:
Python
1
import curses
выдаёт ошибку: no module named '_curses'.

Добавлено через 13 минут
Garry Galler, из документации
The Windows version of Python doesn’t include the curses module.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.02.2020, 14:49
https://www.lfd.uci.edu/~gohlke/pythonlibs/#curses
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.02.2020, 15:14
На pypi windows_curses также есть скомпилированная под винду версия curses.
Только версия чуть постарее, чем на lfd.uci.edu.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
24.02.2020, 16:26  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Никак, вернуть курсор каретки на строку вверх нельзя.
Но это вообще то одна строка, просто перенесённая.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.02.2020, 16:31
Это две строки.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
24.02.2020, 16:49  [ТС]
Рыжий Лис, почему?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.02.2020, 16:50
В консоли отрисовалось как две строки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2020, 16:50
Помогаю со студенческими работами здесь

Странное поведение list.insert()
Написал функцию, которая должна перемешивать слова в строке и распечатывать результат и ключ, по которому можно восстановить исходный...

Странное поведение IDE
Совсем новичок в питоне, да и в целом в программировании. Ситуация такая: вчера игрался с отправкой email сообщения, файл скрипта назывался...

странное поведение интерпретатора
у меня есть список из 50(допустим) ссылок. вида: truelinks = list('http://www.site1.ru/', 'http://www.site2.ru/',...

Странное поведение библиотеки requests
Доброго времени суток! Обнаружил странную особенность библиотеки requests. Заметил это случайно, когда делал для собственного образования...

Странное поведение при работе с массивами
Здравствуйте! Есть код - from tkinter import Tk, Canvas arr = *10]*10 print(arr) def click(e):


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru