【问题标题】:If condition in for loop for two variable两个变量的for循环中的if条件
【发布时间】:2020-07-03 13:53:40
【问题描述】:

我有一个名为 st 的数据文件,它包含多行变量,每一行都有特定的名称。 我想选择两个具有名称的数据的特定行并将它们分配给值。我的代码如下所示,它只选择我的数据行并忽略第二个“if”条件。 有人有想法吗?


with open(input("ENTER YOUR STATIONS COORDINATES FILE NAME : "), 'r') as st:
    ST = input("ENTER YOUR STATION NAME :").upper()
    ST1 = input("ENTER YOUR 00 STATION NAME :").upper()
    with open(input("ENTER YOUR COORDINATE FILE NAME :"), 'r') as f1:
        with open(input("ENTER YOUR OUTPUT FILE NAME :"), 'w') as f2:
            print(ST, ST1)
            for lines in st:
                values = lines.split()
                NO = int(values[0])
                X = float(values[1])
                Y = float(values[2])
                Z = float(values[3])
                Code = values[4]
                if Code == ST:
                    X1 = float(values[1])
                    Y1 = float(values[2])
                    print(X1, Y1)
                    if Code == ST1:
                        X00 = float(values[1])
                        Y00 = float(values[2])
                        print(X1, Y1, X00, Y00)
                        st.close()

我的输入数据的一部分:

 1      1505.114      5528.524   1060.572   S1
 2      1283.787      5442.505   1084.851   S3
 3      1189.962      5272.845   1108.214   S3t1*

我的代码输出如下:

ENTER YOUR STATIONS COORDINATES FILE NAME: st
ENTER YOUR STATION NAME:s3t2
ENTER YOUR 00 STATION NAME:s3
ENTER YOUR COORDINATE FILE NAME:h.dat
ENTER YOUR OUTPUT FILE NAME:h.out
S3T2 S3
1059.056 5230.141
Process finished with exit code 0*

【问题讨论】:

    标签: python for-loop if-statement conditional-statements


    【解决方案1】:

    如果不使用 else 或 elif 语句,则不能使用多个 if 语句。编译器在“if statements”中寻找两件事来给出输出:首先,如果条件满足;第二,如果条件没有满足。您已经给出了两个连续的“if 语句”,但没有提供如果条件不满足会发生什么。所以使用 else 语句给编译器它正在寻找的第二件事。

    【讨论】:

    • 当我为下一个条件添加'elif'或'else'时,它根本不起作用,我不知道为什么?
    • 可能是您在第一个“if 语句”中输入了“else 语句”。不要在 if 语句中写 else 或 elif 语句,将其写在与第一个“if 语句”相同的缩进级别。
    • 完全按照你说的做了。非常感谢您能告诉我如何在一个循环中分配两个变量。
    • 假设您有两个数据集 D1 和 D2,并且您希望同时遍历这两个数据集。它实际上很简单。只需对 zip(D1,D2) 中的 i,j 执行此操作:D1 的值将进入“i”,D2 的值将进入“j”。
    • 谢谢大家的指导和cmets,但是我说的数据文件第二行我的第一个参数和第三行我的第二个参数,都放不下了压缩命令。我想将每一行的第一个和第二个参数分配给第四个参数(对应名称)。
    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多