0

ファイルをループして最大値を見つけ、その値と行数を返します。myMaxで変換しなかった場合int()、変数を文字列として設定すると、順序付けされていない型エラーが発生します。何を忘れたの?

def main():
    myMax= 0
    myCount = 0

    myFile = open("numbers.dat", 'r')
    for line in myFile :
        myCount = myCount + 1
        if int(line) > int(myMax): 
            myMax = line

    myFile.close()

    print ("Out of %s lines, the highest value found was %s" %(myCount, myMax))

main()  
4

4 に答える 4

3

myMax = lineに変更する必要がありますmyMax = int(line)。これによりif int(line) > int(myMax):if int(line) > myMax:

于 2012-11-06T02:41:02.793 に答える
0

行'myMax= line'が原因だと思います-型変換(int(line)> int(myMax):)を作成しましたが、割り当てていません。次の場合:

def main():
    myMax = 0
    with open("numbers.dat", 'r') as myFile:
        for i, line in enumerate((int(x) for x in myFile)):
            if line > myMax: 
                myMax = line

    print ("Out of %s lines, the highest value found was %s" % (i, myMax))

main()  

空の行があり、それらをスキップしたい場合:

def main():
    myMax = 0
    with open("numbers.dat", 'r') as myFile:
        for i, line in enumerate((int(x) for x in myFile if x)):
            if line > myMax: 
                myMax = line

    print ("Out of %s lines, the highest value found was %s" % (i, myMax))

main()  
于 2012-11-06T02:39:27.070 に答える
0

このファイルには有効な数値が含まれており、数値に変換できない文字列は含まれていません。

with open('numbers.dat') as f:
   lines = [int(line) for line in f if line.strip()]

print 'Out of %s lines, the highest value is %s' % (len(lines),max(lines))
于 2012-11-06T02:38:38.757 に答える
0

これは、「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))

主要()

于 2012-11-06T04:50:17.443 に答える