簡體   English   中英

如何從帶有 python 的列表中提取分子和分母?

[英]How can I extract numerator and denominator from a list w/ python?

我有一個包含分數列表的文件,我想簡化它們。 列表如下所示:

124/246
71/69
2574/3850
...

為了簡化我嘗試使用以下代碼提取分子和分母,但它似乎只提取最后一位數字(f1 和 f2 是我打開的文件,我在其中讀寫,而 Simplify 是先前定義的函數):

while  f1.readline() != "":
    i = 1
    while f1.read(1) != "/":
        num = f1.read(i)
        i += 1
      
    den = f1.read(i)                                     
    num, den = Simplify(int(num), int(den))

    f2.write(str(num) + "/" + str(den) + "\n")

我會給予一些指導。 非常感謝:)

您使這比必要的復雜得多,並且在此過程中做錯了很多事情。

當您在if條件下調用f1.readline()f1.read(1)時,它會使用文件中的該行或字符。 下一個文件操作將從停止的地方讀取,它不會返回 go 並再次處理同一行。 因此,除非您將文件 position (使用f1.tell() )然后將 go 保存回它(使用f1.seek() ),否則您不能使用此模式來計算/之前的字符數然后讀取它們再次。

但是沒有必要計算任何東西。 只需閱讀該行並使用split()將其分為分子和分母。

for line in f1:
    line = line.strip() # remove newline
    num, den = line.split('/')
    num, den = Simplify(int(num), int(den))

    f2.write(str(num) + "/" + str(den) + "\n")

我會以不同的方式處理這個問題。

首先,我會從 f1 獲取每一行並將其存儲在一個列表中。 然后,我將遍歷這個列表並使用split() function 來獲取分子和分母。 最后,我會將它們寫入 f2。

這是一些可以做到這一點的代碼:

lines = f1.readlines() # Store all the lines in a list

for fraction in lines:
    split_fraction = fraction.split("/") # Split the fraction into a list containing the numerator and denominator
    num = split_fraction[0]
    den = split_fraction[1]

    num, den = Simplify(int(num), int(den))
    f2.write(str(num) + "/" + str(den) + "\n")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM