私の割り当てでは、3つのモジュール(fileutility、choices、およびselectiveFileCopy)が必要です。最後のものは、最初の2つをインポートします。入力ファイルから選択的にコピー
入力ファイルから選択したテキストを選択的にコピーし、選択モジュールの「述語」によって決定される出力ファイルに書き出すことを目的としています。のように、特定の文字列が存在する場合(choices.contains(x))、または長さ(choices.shorterThan(x))がある場合は、すべてをコピーします(choices.always)。
これまではalways()の作業しか行っていませんが、1つのパラメータを取る必要がありましたが、私の教授はパラメータが何か、何もない(?これは可能ですか?そうであれば、私の定義をどのように書くのですか?
この非常に長い質問の第2の部分は、他の2つの述語が機能しない理由です。私がドキュメンタスト(課題の別の部分)でそれらをテストしたとき、彼らはすべて合格しました。ここで
は、いくつかのコードです:fileutility(Iは、この機能は無意味であると言われてきたが、その割り当てのその部分...) -
def safeOpen(prompt:str, openMode:str, errorMessage:str):
while True:
try:
return open(input(prompt),openMode)
except IOError:
return(errorMessage)
choices-
def always(x):
"""
always(x) always returns True
>>> always(2)
True
>>> always("hello")
True
>>> always(False)
True
>>> always(2.1)
True
"""
return True
def shorterThan(x:int):
"""
shorterThan(x) returns True if the specified string
is shorter than the specified integer, False is it is not
>>> shorterThan(3)("sadasda")
False
>>> shorterThan(5)("abc")
True
"""
def string (y:str):
return (len(y)<x)
return string
def contains(pattern:str):
"""
contains(pattern) returns True if the pattern specified is in the
string specified, and false if it is not.
>>> contains("really")("Do you really think so?")
True
>>> contains("5")("Five dogs lived in the park")
False
"""
def checker(line:str):
return(pattern in line)
return checker
選択ファイルコピー-
import fileutility
import choices
def selectivelyCopy(inputFile,outputFile,predicate):
linesCopied = 0
for line in inputFile:
if predicate == True:
outputFile.write(line)
linesCopied+=1
inputFile.close()
return linesCopied
inputFile = fileutility.safeOpen("Input file name: ", "r", " Can't find that file")
outputFile = fileutility.safeOpen("Output file name: ", "w", " Can't create that file")
predicate = eval(input("Function to use as a predicate: "))
print("Lines copied =",selectivelyCopy(inputFile,outputFile,predicate))
ああ。はい、ありがとうございます。私は単純なことを知らない傾向があります。 –