Уведомления

Группа в Telegram: @pythonsu

#1 Июль 25, 2016 02:33:14

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

Вопрос, видимо, не точно сформулировал в заголовке.
А суть такова:
Допустим имеем

 x = input('Bведите первое число')
y = input('Bведите второе число')
print(x+y)

В терминале, после ввода числа и нажаитя на ентер видно - что я вводил. А надо, что бы число стиралось… Что бы не было видно.

Как реализовать?

PS: На вопрос - зачем оно нужно ответ прост: в конечном итоге мне необходимо сделать программу, заполнять которую будет поочерёдно три человека, передавая устройство друг-другу. И ответа предыдущего видеть нельзя.

Попутно ещё один вопрос нарисовался. Не стану ради него отдельную тему создавать.

Имею
 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]

Как задать условие, при котором (в случае если в списке будут две одинаковые цифры) программа вернёт False?

Отредактировано Tenebras (Июль 25, 2016 02:51:14)

Офлайн

#2 Июль 25, 2016 08:21:30

Stepan_M
Зарегистрирован: 2016-07-20
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

 import getpass
x = getpass.getpass("input something:")
print(x)

 nums = [1, 2, 3, 4, 5] # return True
#nums = [1, 2, 3, 4, 1, 5] # return False
if any(nums.count(x) > 1 for x in nums):
    print("False")
else:
    print("True")

Отредактировано Stepan_M (Июль 25, 2016 08:36:22)

Офлайн

#3 Июль 25, 2016 09:47:39

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

 def is_with_duplicates(lst):
    return len(lst) == len(set(lst))

Офлайн

#4 Авг. 4, 2016 02:58:24

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

Stepan_M
x = getpass.getpass(“input something:”)

C getpass вообще не видно, что вводишь. Мне же надо, что бы я видел, что ввожу, а после нажатия Enter введённое исчезало. Собственно у меня задание - написать игру Чепуха.

 file_name = input("""Придумайте имя файла, в который будет сохранён результат игры!
Если вы придумаете название уже существующее, то ни чего страшного не случится!
Просто в уже существующий файл будет записаны результаты новой игры, но старые результаты тоже останутся!
Введите имя и нажмите Enter:""")
f_name = str(file_name) + str('.txt')
file = open(f_name, 'a')
a = input('Кто?:')
b = input('С кем?:')
c = input('Где?:')
d = input('Что делали?:')
e = input('Кто пришёл?:')
f = input('Что принёс?:')
g = input('Что сказал?:')
h = input('Что ему ответили?:')
i = input('Чем всё закончилось?:')
question = [a, b, c, d, e, f, g, h, i,]
text = "У вас получилась такая вот история: {0} и {1} {2} {3}. Пришёл {4}, принёс {5}. И говорит им: {6}! А ему отвечают:{7}! Закончилось всё {8}".format(question[0], question[1], question[2], question[3], question[4], question[5], question[6], question[7], question[8],)
file.write(text)
file.close
file = open(f_name, 'r')
print(file.read())
file.close()

Офлайн

#5 Авг. 4, 2016 21:08:03

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

Tenebras
Чтобы после нажатия Enter введенное исчезало, надо после каждого input() делать очистку экрана.
Код игры тоже можно сократить:

 # -*- coding: utf-8 -*-
import os
questions = ['Кто? ', 'С кем? ', 'Где? ', 'Что делали? ', 'Кто пришел? ', 'Что принес? ', 'Что сказал? ', 'Что ему ответили? ', 'Чем все закончилось? ']
answers = []
file_name = input("""Придумайте имя файла, в который будет сохранён результат игры!
Если вы придумаете название уже существующее, то ни чего страшного не случится!
Просто в уже существующий файл будет записаны результаты новой игры, но старые результаты тоже останутся!
Введите имя и нажмите Enter: """)
f_name = file_name + '.txt'
file = open(f_name, 'a')
for q in questions:
    a = input(q)
    os.system('clear')    # Для Windows вместо 'clear' используйте 'cls' 
    answers.append(a)
text = "У вас получилась такая вот история: {0} и {1} {2} {3}. Пришёл {4}, принёс {5}. И говорит им: {6}! А ему отвечают:{7}! Закончилось всё так: {8}".format(*answers)
file.write(text)
file.close
file = open(f_name, 'r')
print(file.read())
file.close()

Примечание: как работает под Windows, я не проверял. Под Mac OS X и под Debian Linux все нормально.

Отредактировано old_monty (Авг. 4, 2016 22:23:28)

Офлайн

#6 Авг. 5, 2016 01:34:34

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

Спасибо! Сейчас опробую)))
У меня нет Windows. У меня именно что macOS (теперь оно так называется - osX кануло в лету) и Linux.

Офлайн

#7 Авг. 5, 2016 01:40:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Вопрос с обработкой в терминале

Tenebras
Как реализовать?
#!/usr/bin/env python3

import curses


def main():
screen = curses.initscr()

prompt = 'Input: '
screen.addstr(2, 2, prompt)
s = screen.getstr(2, 2 + len(prompt))

screen.clear()

out = s.decode('utf-8')
screen.addstr(3, 2, 'You have entered: ' + out)
screen.refresh()
screen.getch()

screen.addstr(4, 2, 'Bye')
screen.refresh()
screen.getch()

curses.endwin()

if __name__ == '__main__':
main()



Отредактировано py.user.next (Авг. 5, 2016 01:47:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version