Python 脚本:不包括范围上限

问题描述 投票:0回答:1

我写了这个脚本:

inpf = input('input file name:')
lb = input('lower bound:')
ub = input('upper bound:')
with open(inpf, 'r') as f:
    contents = f.readlines()
    for i in contents:
        if lb <= i <= ub:
            print(i, end='')

但它的表现没有达到预期,我不明白为什么。对于第一个输入 (inpf),我输入了名为 input1.txt 的 .txt 文件的名称,其中包含以下内容:

aspiration
classified
federation
graduation
millennium
philosophy
quadratics
transcript
wilderness
zoologists

对于第二个输入(磅),我输入“分类”(不带引号)。

对于第三个输入(ub),我输入“millennium”(不带引号)。

输出应该是:

classified
federation
graduation
millennium

但由于某种原因,下限(分类)包含在我的输出中,但不包含上限(千年)。每当我遇到编码问题时,我只需咨询 ChatGPT、Bard 或 Bing Chat,就可以毫无问题地得到答案。但这一项却让所有 3 位法学硕士都难住了。他们只是不断返回与我编写的代码完全相同的代码,或者得到相同的错误结果的代码。

谁能帮我解开这个谜团?

我尝试了不同的操作符变体,并使用“if i >= lb or i <= ub" instead of "if lb <= i <= ub", but got the same results.

python file range operators
1个回答
0
投票

所有

i
的末尾都有一个
'\n'
字符。所以你正在比较“千年” ' <= 'millennium' which is False. So strip your lines:

for i in contents:
    if lb <= i.strip() <= ub:
        print(i)
© www.soinside.com 2019 - 2024. All rights reserved.