基于 Python 字符串的 if 语句

Posted

技术标签:

【中文标题】基于 Python 字符串的 if 语句【英文标题】:Python string-based if-statement 【发布时间】:2017-01-24 23:36:43 【问题描述】:

我正在为我正在处理的项目编写 Python 脚本,但我遇到了一个我无法弄清楚的错误。我对 Python 还很陌生,所以如果这是一个非常业余的问题,我深表歉意。

我有一个 if 语句,它比较从文本文件中获取的字符串。它应该接受这个输入,然后根据输入的内容返回一个带有文件位置的字符串。但是,当我运行脚本时,它总是解析为 else 子句,即使输入正是它要与之比较的内容。

def findfile(input):
     if input.lower() == 'option a':
          return 'file location a'
     elif input.lower() == 'option b':
          return 'file location b'
     elif input.lower() == 'option c':
          return 'file location c'
     elif input.lower() == 'option d':
          return 'file location d'
     else:
          return 'Invalid Input'

我在脚本前面进行了检查,以便我知道传递的输入是一个字符串。无论如何,即使我传递了一个字符串'option b',它也会返回'Invalid Input'

提前感谢您的任何帮助!

【问题讨论】:

Python中有一个内置函数input()。不要将此名称用于参数或变量。另外,请考虑在'option a' : 'file location a', ... 中查找字典,而不是在级联的if 中查找。 旁注:省点工作,执行一次大小写转换,只需将input = input.strip().lower()作为函数的第一行,并从每个条件测试中删除.lower()调用。并且不要给变量赋予与 Python 内置函数相同的名称(例如 input),否则你最终会搞砸自己。也许inpinputstr findfile('option b') 返回'file location b' 所以我猜它实际上不是那个字符串。 print 是一种廉价但有效的调试工具。作为函数的第一条语句,输入 print "|" + 输入 +“|”,长度(输入)。这将使您对实际提供给该函数的内容有一个坚实的了解。 【参考方案1】:

如果您从文件中获取输入,则可能会发生这种情况,因为字符串有一个尾随换行符。使用strip 将其删除。

【讨论】:

@JohnGredler 使用print 进行调试,正如 Prune 所建议的,会显示问题。这在课程中似乎被忽视了,但学习起来却非常有价值。

以上是关于基于 Python 字符串的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

if/else 语句在 python 中接受大写和小写字母的字符串

连接 Python Pandas 中 if 语句的结果字符串

python基础字符串和if条件语句

python if语句

《Python编程从入门到实践》_第五章_if语句

Python学习第79天(控制语句循环和字符串对象)