Как я могу исправить getpassWarning и правильно использовать getpass? - PullRequest
0 голосов
/ 20 января 2020

Итак ... я просто хочу этого. Я пытаюсь сделать игру «Доверяющая игра» в Python. Это игра, которую вы можете предать своему партнеру или нет. вот код, который я делал:

p1_point = 0
p2_point = 0
x = int(input("How many levels? "))
while x != 0:
    p1 = input("Player 1, pick yes to agree or no to betray. ") #I want to change this.
    p2 = input("Player 2, pick yes to agree or no to betray. ") #I want to change this.
    if p1 == "yes" and p2 == "yes":
        p1_point += 5
        p1_point += 5
    elif p1 == "yes" and p2 == "no":
        p1_point -= 2
        p2_point += 10
    elif p1 == "no" and p2 == "yes":
        p1_point += 10
        p2_point -= 2
    elif p1 == "no" and p2 == "no":
        p1_point -= 5
        p2_point -= 5
    print("Player 1 said {} and Player 2 said {}.".format(p1, p2))
    print("Player 1's score is now {} and Player 2's score is now {}.".format(p1_point, p2_point))
    x -= 1
if p1_point > p2_point:
    print("Player 1 wins!")
elif p1_point < p2_point:
    print("Player 2 wins!")
elif p1_point == p2_point:
    print("It's a tie!")

, но я хочу сделать так:

****

, чтобы они не обманывали.

Я видел кто-то сказал, чтобы использовать модуль getpass, я использовал его следующим образом.

p1 = getpass.getpass(prompt = "Player 1, pick yes to agree or no to betray. ", stream = None)
p2 = getpass.getpass(prompt = "Player 2, pick yes to agree or no to betray. ", stream = None)

, но было getpassWarning.

(from warnings module):
File "C:\Program Files (x86)\Microsoft Visual 
Studio\Shared\Python36_64\lib\getpass.py", line 100
return fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
Player 1, pick yes to agree or no to betray.

Как я могу это исправить? И как мне использовать getpass?

1 Ответ

1 голос
/ 20 января 2020

Вы можете использовать getpass

import getpass

pswd = getpass.getpass('Password:')

Это должно сделать работу. Если вы получаете getPassWarning, вы можете попробовать это

import sys
import msvcrt

passwor = ''
while True:
    x = msvcrt.getch()
    if x == '\r':
        break
    sys.stdout.write('*')
    passwor +=x

print '\n'+passwor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...