infile から各行を読み取る Python プログラムを作成しようとしています。この infile は日付のリストです。日付が有効な場合は true を返し、そうでない場合は false を返す関数 isValid() を使用して各行をテストしたいと考えています。日付が有効な場合は、出力ファイルに書き込まれます。そうでない場合は、無効が出力ファイルに書き込まれます。私は関数を持っています。私が知りたいのは、関数を使用して各行をテストする最良の方法です。これはループで行う必要があることはわかっていますが、ファイル内の各行を 1 つずつテストするためにループを設定する方法がわかりません。
編集:基本的に機能するプログラムができました。ただし、出力ファイルへの出力が正しくありません。おそらく誰かが理由を説明できるでしょう。
OK、基本的に動作するプログラムができましたが、出力ファイルで奇妙な結果が得られます。うまくいけば、Python 3 の経験を持つ人が助けてくれます。
def main():
datefile = input("Enter filename: ")
t = open(datefile, "r")
c = t.readlines()
ofile = input("Enter filename: ")
o = open(ofile, "w")
for line in c:
b = line.split("/")
e = b[0]
f = b[1]
g = b[2]
text = str(e) + " " + str(f) + ", " + str(g)
text2 = "The date " + text + " is invalid"
if isValid(e,f,g) == True:
o.write(text)
else:
o.write(text2)
def isValid(m, d, y):
if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
if d is range(1, 31):
return True
elif m == 2:
if d is range(1,28):
return True
elif m == 4 or m == 6 or m == 9 or m == 11:
if d is range(1,30):
return True
else:
return False
これは私が得ている出力です。
1998 年 5 月 19 日は無効です 1984 年 7 月 21 日は無効です 1862 年 12 月 7 日は無効です 2000 年 13 月 4 日は無効です 1460 年 11 月 40 日は無効です 1970 年 5 月 7 日は無効です 2001 年 8 月 31 日は無効です日付 6 26, 1800 は無効です日付 3 32, 400 は無効です日付 1 1, 1111 は無効です