如果我的文件中的行數不是2的冪,但不超過64,我想添加' - '到最後一行,這樣線數成爲最接近的兩個冪。Python,添加到紡織品,但只有當行有一定的價值
這是我到目前爲止,它不適用於我,但我不知道如果我可能需要一個完整的其他功能來檢查號碼。
def name():
j=open('file.txt', 'r', encoding='utf-8')
numbers=sum(1 for line in j)
if numbers != 2 or 4 or 8 or 16 or 32 or 64:
j.append('-')
有什麼建議嗎?
現在我有這個,仍然無法正常工作的所有方式,當它打印我不能看到所添加的行
def name():
with open('file.txt', 'r+', encoding='utf-8') as j:
numbers=sum(1 for line in j)
if numbers < 64:
lower2 = round(2**math.log(numbers, 2))
if numbers > lower2:
missing = 2*lower2 - numbers
j.write('-\n' * missing)
j=open('file.txt', 'r', encoding='utf-8')
for i in j.readlines():
print (i)
j.close()
在編輯的版本,你抄我的代碼錯誤。而不是'round(2 ** int(math.log(numbers,2)))',你只是做了'round(2 ** math.log(numbers,2))''。例如,給定數字'6','math.log(6,2)'大約是2.58,所以'int(math.log(6,2))'是2和'round(2 ** math.log (6,2))'是'4',這意味着有兩條缺失的行......但是'round(2 ** math.log(6,2))'當然只是'6',這意味着沒有缺失的行。 – abarnert
如果你不明白對數是如何工作的,你應該嘗試用你理解的方式來寫數學。 (即使效率稍低或冗長,誰在乎呢?即使是最天真的算法也只需要幾條線,浪費在微秒以下......)另外,您需要學習如何進行基本調試 - 打印出中間值你正在計算,看看事情出了什麼問題,所以你有更多的信息可以繼續,而不僅僅是「它似乎沒有工作」。 – abarnert
現在有效,非常感謝! – jmanikolina