Я искал, искал и пробовал все. Я создаю игру, в которой пользователь вводит предварительно назначенный пин-код, и я хочу проверить этот пин-код на соответствие файлу .txt в Python. Я перепробовал так много разных строк кода, и мой результат: либо все верно, либо ничего не верно. Что я делаю не так? Пины отформатированы в каждой строке и имеют буквенно-цифровое обозначение, подобное этому...
1DJv3Awv5
1DGw2Eql8
3JGl1Hyt7
2FHs4Etz4
3GDn9Buf8
1CEa9Aty0
2AIt9Dxz9
5DFu0Ati4
3AJu9Byi4
1EAm0Cfn1
3BEr0Gwk0
7JAf8Csf8
4HFu0Dlf4
Вот что у меня есть:
user_input = input('Please enter your PIN: ')
if user_input in open("PINs.txt").read():
print('Congratulations! Click the button below to get your Bingo Number.')
else:
print('The PIN you entered does not match our records. Please check your PIN and try again.')
Чтобы быть уверенным, нужно увидеть примеры контактов и «PINs.txt», но ваше совпадение для простого текста, поэтому будет соответствовать контакту «1» с содержимым файла «1234», например, что, вероятно, не то, что вы хотите. Я предлагаю вам провести некоторое время с учебными пособиями по Python, прежде чем идти слишком далеко. Вы можете использовать простые базы данных или читать/записывать файлы yaml или json для своих данных.
да... Думаю, это поможет.... лол Вот пример: 1DJv3Awv5 1DGw2Eql8 3JGl1Hyt7 2FHs4Etz4 3GDn9Buf8 1CEa9Aty0 2AIt9Dxz9 5DFu0Ati4 3AJu9Byi4 1EAm0Cfn1 3BEr0Gwk0 7JAf4HFusf8 каждая своя линия.
Вы должны редактировать свой вопрос и поместить эту информацию там, где она может быть правильно отформатирована, а не здесь.
Спасибо. первый раз задаю вопрос на этом сайте.
Попробуйте использовать .readlines()
, таким образом вы должны сопоставить всю строку:
user_input = input('Please enter your PIN: ') + "\n" # Adding \n to conform to readlines
if user_input in open("PINs.txt").readlines():
print('Congratulations! Click the button below to get your Bingo Number.')
else:
print('The PIN you entered does not match our records. Please check your PIN and try again.')
Небольшой рефакторинг:
with open("PINs.txt") as pinfile: # Make sure file is closed
user_input = input('Please enter your PIN: ')
for pin in pinfile: # Iterate line by line, avoid loading the whole file into memory.
if pin.rstrip() == user_input: # Remove newline using .rstrip()
print('Congratulations! Click the button below to get your Bingo Number.')
break
else: # Note the indentation, the 'else' is on the 'for' loop.
print('The PIN you entered does not match our records. Please check your PIN and try again.')
На самом деле, вы можете вообще не использовать .readlines()
, это использует объекты файла фактов, перебирающие строки, и также лучше для памяти:
user_input = input('Please enter your PIN: ') + "\n" # Adding \n to conform to readlines
if user_input in open("PINs.txt"):
print('Congratulations! Click the button below to get your Bingo Number.')
else:
print('The PIN you entered does not match our records. Please check your PIN and try again.')
У меня было ``` .readlines():``` там так много раз, но проблема была решена с помощью +'\n'
Спасибо, спасибо, спасибо!
Что внутри PINs.txt? Это список контактов, разделенных в каждой строке, или через пробел, или ...?