これは、「numbers.dat」ファイルにファイル全体に文字列と数字が含まれている場合に問題を解決するために使用したものです。行を文字ごとに分割してから、複数桁の数字を文字列変数myTempにまとめる必要がありました。次に、数字である文字がない場合は、myTempのサイズをチェックし、そこに何かがあるかどうかを確認しました。それを整数にしてmyIntに割り当て、myTemp変数を空にリセットして(そのため、行に別の数値がある場合は、すでにそこにある数値に追加されません)、現在の最大値と比較します。それはカップルの場合ですが、私はそれが仕事をしていると思います。
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def main():
myMax= 0
myCount = 0
myTemp = ''
lastCharNum = False
myFile = open("numbers.dat", 'r')
for line in myFile :
myCount = myCount + 1
for char in line: #go through each character on the line
if is_number(char) == False: #if the character isnt a number
if len(myTemp) == 0: #if the myTemp is empty
lastCharNum = False #set lastchar false
continue #then continue to the next char
else: #else myTemp has something in it
myInt = int(myTemp)#turn into int
myTemp = '' #Flush myTemp variable for next number (so it can check on same line)
if myInt > myMax: #compare
myMax = myInt
else:# otherwise the char is a num and we save it to myTemp
if lastCharNum:
myTemp = myTemp + char
lastCharNum = True #sets it true for the next time around
else:
myTemp = char
lastCharNum = True #sets it true for the next time around
myFile.close()
print ("Out of %s lines, the highest value found was %s" %(myCount, myMax))
主要()
「numbers.dat」ファイルの各行に数字しかない場合、これは非常に簡単に解決します。
def main():
myMax= 0
myCount = 0
myFile = open("numbers.dat", 'r')
for line in myFile :
myCount = myCount + 1
if int(line) > myMax: #compare
myMax = int(line)
myFile.close()
print ("Out of %s lines, the highest value found was %s" %(myCount, myMax))
主要()