繁体   English   中英

从 Python 中的文件读取数据的问题

[英]Problem with reading data from file in Python

所以,我是 Python 的新手,我在读取变量时遇到了一个小问题。 我有一个文本文件,其中包含三个变量:变量 N,位于 #1 行,变量 First 和 Second,位于 #2 - #N+1 行,变量 M,位于 #N+2 行以及变量 A 和 B ,位于#N+3 - #N+3+M 行。 我尽力尝试阅读这些变量,但我偶然发现了一个错误。 当我开始阅读 vars First 和 Second 时,出现了这个错误:

文件 C:/Users/Tomek/PycharmProjects/pythonProject/main.py,第 12 行,for i in range(2, n+1): NameError: name 'n' is not defined

from collections import namedtuple
Pair = namedtuple("Pair", ["first", "second"])
pairs = [Pair] * (2*200*1000+1)

try:
    data = open('data.txt', 'r')
    results = open('results.txt', 'w')
    for i, line in enumerate(data):
        for i in range (1, 1):
            n = data.readline()
            n = int(n)
        for i in range(2, n+1):
            first, second = (int(x) for x in data.readline().split(':'))
            first = int(first)
            second = int(second)
            if first > second:
                temp = first
                first = second
                second = temp
            pairs[i] = Pair(first, second)
        for i in range(n+2, n+2):
            m = data.readline()
            m = int(m)
        for i in range(n+3, n+m+3):
            a, b = (int(x) for x in data.readline().split('-'))
            a = int(a)
            b = int(b)
            a -= 1
            b -= 1
            temp = pairs[a]
            pairs[a] = pairs[b]
            pairs[b] = temp
            p = -1e-9
            ok = True
            for k in range(0, n):
                if pairs[k].first >= p:
                    p = pairs[k].first
                elif pairs[k].second >= p:
                    p = pairs[k].second
                else:
                    ok = False
                    break
                if ok:
                    results.write("YES")
                else:
                    results.write("NO")
    data.close()
    results.close()
except IOError:
    print("Data file not found")

数据.txt:

4      -that's N
2:5    /-
3:4    | those are Firsts and Seconds
6:3    |
2:7    \_
2      -that's M
3-4    /-
1-3    \_ those are As and Bs

range(1, 1)为空,所以这部分代码:

for i in range (1, 1):
    n = data.readline()
    n = int(n)

没有定义n ,当执行到第 12 行时,你会得到一个错误。

您可以删除for语句,将这三行更改为:

n = data.readline()
n = int(n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM