【问题标题】:raw_input in python doesn't want to work with if-else statementspython 中的 raw_input 不想使用 if-else 语句
【发布时间】:2014-12-12 12:37:44
【问题描述】:

我刚开始接触 Python,但在用户输入操作方面遇到了一些麻烦。似乎当我尝试将 raw_input 与另一个字符串进行比较时,它总是错误的?我确保这种情况无关紧要,并避免使用“输入”,因为它只接受数字。在使用 Python 用户输入进行一些谷歌搜索之后,我现在非常困惑(是的,这是一个简单的温度转换程序)。我正在使用 Python v2.7.8

TL:DR,下面的代码总是导致'else'的决定

mode = raw_input("Enter the type of conversion mode, C or F: ")
if (mode.lower == "c" or mode.lower == "f"): toConvert = input("Enter the number to be converted: ")
else: print mode + " is not a valid conversion type, Try again!"

【问题讨论】:

  • 附带说明:“避免使用'输入',因为它只接受数字”是错误的; input 接受任何 Python 表达式:数字、引号内的字符串、__import__('os').system('rm -rf /'),以及您可以放入代码中的任何内容。但是(正是出于这个原因)避免input 无论如何都是一个好主意。
  • 另外一个注意事项:不要试图在一条线上尽可能地死记硬背;它只会让你的代码更难阅读。此外,在 Python 中,if 条件周围不需要括号。
  • 它有效!非常感谢大家,无论如何我认为这很简单

标签: python if-statement input


【解决方案1】:

你的问题与raw_input无关,是下一行:

if (mode.lower == "c" or mode.lower == "f"):

mode.lowerlower 方法。您在询问该方法是否等于字符串"c"。当然不是。

你想做的是调用那个方法,并询问result是否等于字符串"c"。像这样:

if mode.lower() == "c" or mode.lower() == "f":

【讨论】:

    【解决方案2】:

    lower 是一个字符串方法。除非您实际调用由括号完成的方法,否则它不会返回小写字母。

    替换:

    if (mode.lower == "c" or mode.lower == "f"):
    

    有了这个:

    if mode.lower() == "c" or mode.lower() == "f":
    

    如果您在 python shell 中进行实验,您会看到不同之处:

    >>> mode = 'C'
    >>> mode.lower
    <built-in method lower of str object at 0x7f7ad665e2b0>
    >>> mode.lower()
    'c'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多