【问题标题】:Elif Condition in PythonPython 中的 Elif 条件
【发布时间】:2016-05-04 16:17:40
【问题描述】:

我有一些 Python 代码需要从名为 varfile.txt 的文本文件中获取字符串输入,并在该数据上应用条件并打印输出。代码如下:

file = open("varfile.txt", "r")
lines = file.readlines()
e= str(lines[1]);
print(e)
if  e == '<0.1%':
        print("1")
elif  e == '(0.1-25)%':
        print("2")
elif  e == '(0.25-0.5)%':
        print("3")
elif  e == '(0.5-1)%':
        print("4")
elif  e == '>1%':
        print("5")
else:
        print("0")

输出如下:

(0.25-0.5)%  
0

即使e 的值打印为(0.25-0.5)%,它也不会与 elif 子句中的条件进行比较,而是将0 作为输出,尽管输出应该是3。你能建议我哪里出错了吗?

【问题讨论】:

  • PLS上传输入文件
  • 我认为您在 elif 条件下使用了额外的空间。它应该是 e == '(0.25-0.5)%' 而不是 ' (0.25-0.5)%'
  • ya..没关系,你可以看到它正在打印正确的值,但比较有一些错误
  • 一般来说,每一行都以换行符结束,所以你应该测试e=='(0.25-0.5)%\n'

标签: python


【解决方案1】:

根据this tutorial files.readlines() 不会从行尾去除结束的换行符。

您可以使用e.strip('\n') 返回一个去掉换行符的字符串,例如:

e = e.strip('\n')
if e == ...:
elif ...

【讨论】:

  • 我建议在比较之前去除所有空白字符而不是仅换行符,因为用户可能更改的文件很容易在行尾包含空格,否则会导致难以理解的错误。所以只需使用e.strip()
【解决方案2】:

readlinesincludes the newline 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多