2017-10-25 7 views
0

現在、私はPythonを学びたいと思っています。私はいくつかの基本を知っており、私はゲームを作ることによって練習しようとしています。これまでの私のコードは次の通りです:特定の文字列で始まる場合、Pythonの2つの連続する行を読む

import time 
import datetime 

now = datetime.datetime.now() 

name = input('What is your name? >> ') 
file = open("users.txt","+w") 
file.write(name + ' started playing at: ' + now.strftime("%Y-%m-%d %H:%M") + '. \n') 
file.close() 

account = input('Do you have an account ' + name + '? >> ') 
while(account != 'yes'): 
    if(account == 'no'): 
     break 
    account = input('Sorry, I did not understand. Please input yes/no >> ') 
if(account == 'yes'): 
    login = input('Login >>') 
    passwd = input('Password >>') 
    if login in open('accounts.txt').read(): 
     if passwd in open('accounts.txt').read(): 
      print('Login Successful ' + login + '!') 
     else: 
      print('Password incorrect! The password you typed in is ' + passwd + '.') 
    else: 
      print('Login incorrect! The login you typed in is ' + login + '.') 

おそらく私はログインシステムに取り組んでいます。今、すべてのバグや非効率なコードなどを無視してください。Pythonに.txtファイルの行をチェックさせる方法と、そこにあれば、以下の行を調べる方法に焦点を当てたいと思います。 私の.txtファイルは次のとおりです。私はプログラムのマルチアカウントを作りたい

loggn 
pass 
__________ 

。これが私が.txtファイルを使用している理由です。何かを明確にするために私が必要な場合は、お尋ねください。ありがとうございました! :

答えて

0

"open( 'accounts.txt')。read()"の結果を自分自身として保存し、それらを配列として反復する - 行番号を知っていれば、次。

success = False 
# Storing the value in a variable keeps from reading the file twice 
lines = open('account.txt').readlines() 
# This removes the newlines at the end of each line 
lines = [line.strip() for line in lines] 
# Iterate through the number of lines 
for idx in range(0, len(lines)): 
    # Skip password lines 
    if idx % 2 != 0: 
     continue 
    # Check login 
    if lines[idx] == login: 
     # Check password 
     if lines[idx + 1] == password: 
      success = True 
      break 

if success: 
    print('Login success!') 
else: 
    print('Login failure') 

あなたはまた、あなたのファイル形式を変更することを検討可能性があります:には発生しません、何かを使用して、すべての偶数番号のラインがログインし、すべての奇数ラインがパスワードであると仮定すると、あなたはこのような何かを持っているでしょうログイン名(コロン、印字不可能なASCII文字、タブなど)、各行のパスワードが続くことは、各行の(login + "\ t" + password)をチェックするだけで、 2本のラインを持つことを心配する必要はありません。

1
with open('filename') as f: 
    for line in f: 
     if line.startswith('something'): 
      firstline = line.strip() # strip() removes whitespace surrounding the line 
      secondline = next(f).strip() # f is an iterator, you can call the next object with next. 
関連する問題