从2个文件中分别取分子、分母,求商?

依依雨柔
  • 233

a.txt:

5
3
3
4
3
3

b.txt:

5
5

3
4

3
4

4
5

3
3
  1. 从第一个文件中每次取 1 行作为 分子
  2. 第二个文件中每次取 2 行,取这 2 个数的和为 分母
  3. 用分子除以分母,输出

该如何写代码?

# 編者備份
![clipboard.png](/img/bV1F0n)
![clipboard.png](/img/bV1F0s)
回复
阅读 3.1k
4 个回答
with open('a.txt') as molecular, open('b.txt') as denominator:
    for line in molecular:
        if not line:
            continue
        try:
            _molecular = float(line.strip())
            denominator_1 = int(denominator.readline().strip())
            denominator_2 = int(denominator.readline().strip())
        except ValueError as e:
            print('Error value:', e)
        print(_molecular/(denominator_1 + denominator_2))
        if not denominator.readline():
            break
import itertools

with open('a.txt') as f1, open('b.txt') as f2:
    for a, b1, b2, _ in itertools.zip_longest(f1, *[f2]*3):
        try:
            a, b1, b2 = (int(item.strip()) for item in (a, b1, b2))
            print(a/(b1 + b2))
        except Exception as err: # you should make a more precise error handling
            pass

我回答過的問題: Python-QA

我从前端js的角度,帮你写一个简单的逻辑吧,如果有能力,你可以改成其他语言。

//假设这是a.txt
var a = 
`5
3
3
4
3
3`;

var b = 
`5
5

3
4

3
4

4
5

3
3`;
//处理两个文件数据
var a_arr = a.split(/\n+/g);
var b_arr = b.split(/\n{2,}/g).map(function(v){return eval(v.split(/\n+/).join('+'))});
var result = a_arr.map(function(v,i){
    return v/b_arr[i];
})

 [0.5, 0.42857142857142855, 0.42857142857142855, 0.4444444444444444, 0.5, NaN]

最后一个nan是因为a,b文件的除数和被除数的个数不匹配导致的。

lambdawn
  • 460
import pandas as pd

a = pd.read_csv("a.txt", header=None)
a.columns=["a"]
b = pd.read_csv("b.txt", header=None)
b.columns=["b"]

b["c"] = map(lambda x: x//2, b.index)
c = b.groupby(b["c"])["b"].sum()

result = a['a']/ c
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏