1

したがって、基本的にテキストファイルを開き、ファイルのテキストコンテンツから配列を作成し(行ごとに分割)、次にユーザーからの入力を取得して、その入力をそれぞれの配列内の用語。ユーザーが送信した文字列が入力されたとおりに配列に含まれているにもかかわらず、プログラムは 2 つの文字列が等しいことを認識できません。文字列を比較するにはどうすればよいですか? この表記法が正しければ、不等式の原因は何でしょうか? 「==」を「is」に置き換えてみましたが、それもうまくいきませんでした。

userinputisfrogeyedpeasUserArray[0]isの両方の入力frogeyedpeas

ファイル Usernames.txt

frogeyedpeas
vsauce

(vsauce の後に完全に空白の追加行があります)

以下に投稿されたコード:

Usernames = open('Usernames.txt', 'r+')
UserArray = Usernames.read().split("\n")

userinput = raw_input("Enter Username: ")
passinput = raw_input("Enter Password: ")
i = 0
q = len(UserArray)
while(i < q):
    founduser = 0
    print userinput, UserArray[i], UserArray #out

    if(UserArray[i] == userinput):
        founduser = 1
        if(PassArray[i] == passinput):
            userstatus = i
            founduser = 2
    i = i + 1
4

5 に答える 5

1

これで十分です:

#What to look for.
x=raw_input("Test for: ")

#Read and split list.
f=open('usernames.txt','r')
y=f.read()
y=y.split(',')
f.close()

#Test if the input is in list.
#If it is, tell what the match is.
for user in y:
    if str(x)==str(user):
        print x+'='+user

「username.txt」の形式は次のようになります。

vsauce、フロギーエンドウ

それがどうなるか教えてください。

于 2013-10-15T18:10:59.983 に答える
1

コードをコピーし、「frogeyedpeas」という単語を含む新しいテキスト ファイルを作成し、==代わりにを使用するとis、コードは機能するように見えます。それをクリーンアップするには、次のように、forループを使用して 2 つの配列をまとめて圧縮することをお勧めします。

for name, password in zip(UserArray, PassArray):
    print userinput, name, UserArray        

    if name == userinput:
        founduser = 1

    if password == passinput:
        userstatus = UserArray.index(name)
        founduser = 2
于 2013-10-15T18:16:12.077 に答える