私は5
の値num
を与えるの自由を取った
num = 5
names = ""
for i in range(num)
print("Name",i+1," >> Enter the name:")
n=input("")
names+=n
ブロックして、コードブロックを破壊することができます、とnames
""
の値は何でありますコードが実行されます。このブロックは問題ありません。すべての入力が行われたnames
と呼ばれるstring
を作成します。区切り文字を入力すると、データを読みやすくなります。提案は改行をある\n
を使用することですので、あなたは、ファイルの書き込みを取得するとき、あなたは実際には各ライン上に、例を一つの名前を持っている:あなたは、ファイルを書き込むしようとしている今
num = 5
names = ""
for i in range(num)
print("Name",i+1," >> Enter the name:")
n = input()
names += n + "\n"
:
このブロックで
file=open("names.txt","w")
file.write(names)
あなたがファイルを閉じることを忘れて、より良い方法は、完全にファイルのパス名を指定するには、例です。
file = open(r"c:\somedir\somesubdir\names.txt","w")
file.write(names)
file.close()
またはより良い使用してwith
:
with open(r"c:\somedir\somesubdir\names.txt","w") as openfile:
openfile.write(names)
ユーザーが名前を入力し、[終了を検索したい場合は、あなたが求めている次のブロック:
lookUp=input("Did you want to look up any names?(Y/N)")
x= ord(lookUp)
if x == 110 or x == 78:
quit()
まず最初は、あなたが生産に使用すべきではないquit()
を使用していることですあなたが本当にsys.exit()
を使用する必要がありますつまり、あなたはimport
sys
モジュールを必要としていることを意味する答えhereを参照してください。次に、答えの数値をN
またはn
にして、if
ステートメントでこれをチェックします。 ord()
を実行する必要はありません。if
ステートメントで直接比較文字列を使用することができます。例:これは本当にどちらか正常に動作していないので、これは
else:
letter=input("Enter the first letter of the names you want to look up in uppercase:")
file=open("names.txt","r")
fileNames=[]
file.list()
for letter in file:
fileNames.index(letter)
fileNames.close()
区切り\n
は次のとおりです。
lookup = input("Did you want to look up any names?(Y/N)")
if lookup.lower() == "n":
sys.exit()
はその後、前のif
文のelse:
ブロックで、要求されたデータを検索するために進みます便利です。テキストファイルが開かれると、ファイルごとにfor line in file
ブロックを列挙し、最初のブロックに\n
区切り文字を追加すると、各行は名前になります。 for letter in file
ブロックでも間違っていますが、それはあなたがしなければならないと思われることをしません。実際には、input
に入力したwhayに関係なく、ファイル内の各文字が返されます。ここでは実施例である:
すべて一緒にそれを置く
letter = input("Enter the first letter of the names you want to look up in uppercase:")
result = []
with open(r"c:\somedir\somesubdir\names.txt", "r") as openfile:
for line in openfile: ## loop thru the file line by line
line = line.strip('\n') ## get rid of the delimiter
if line[0].lower() == letter.lower(): ## compare the first (zero) character of the line
result.append(line) ## append to result
print(result) ## do something with the result
:
import sys
num = 5
names = ""
for i in range(num)
print("Name",i+1," >> Enter the name:")
n = input("")
names += n + "\n"
with open(r"c:\somedir\somesubdir\names.txt","w") as openfile:
openfile.write(names)
lookup = input("Did you want to look up any names?(Y/N)")
if lookup.lower() == "n":
sys.exit()
letter = input("Enter the first letter of the names you want to look up in uppercase:")
result = []
with open(r"c:\somedir\somesubdir\names.txt", "r") as openfile:
for line in openfile:
line = line.strip('\n')
if line[0].lower() == letter.lower():
result.append(line)
print(result)
作成します。私が指摘したい1つの警告、あなたはファイルを作成するとき、あなたはw
モードでファイルを開き、毎回新しいファイルを作成し、前のファイルを上書きします。ファイルに追加する場合は、a
モードで開くか、既存のファイルに追加するか、ファイルが存在しない場合は新しいファイルを作成する必要があります。
ありがとうございます。私はこれを別のやり方で行わなければならないことを知っていました。私はそれが動作すると言われて以来、私はそれがこのように動作するようにしようとしていた。あなたの返事に感謝します。 –