Python:手机故障排除应用程序

Python:手机故障排除应用程序,python,Python,因此,我正在尝试为损坏的手机制作一个简单的故障排除应用程序并解决问题,大约5分钟后,当用户进入手机模型时,我无法通过第4行,它只是停止而不是继续对话。我不知道为什么。非常感谢您的帮助。同样在第6行,我也希望这样,当用户写一行关于手机有什么问题的文字时,它能挑出“坏了”、“裂了”、“湿了”等词。但我不知道是怎么回事,非常感谢您的帮助 brand = raw_input("Please state your phone brand. ") if brand.lower() == ("iphone")

因此,我正在尝试为损坏的手机制作一个简单的故障排除应用程序并解决问题,大约5分钟后,当用户进入手机模型时,我无法通过第4行,它只是停止而不是继续对话。我不知道为什么。非常感谢您的帮助。同样在第6行,我也希望这样,当用户写一行关于手机有什么问题的文字时,它能挑出“坏了”、“裂了”、“湿了”等词。但我不知道是怎么回事,非常感谢您的帮助

brand = raw_input("Please state your phone brand. ")
if brand.lower() == ("iphone"):
    iphone = raw_input ("Please state the model. ")
    if iphone.lower() == ("2G"):
        iproblem2g = raw_input ("Please state your problem. ")
        if iproblem2g.lower() == ("broken") or ("broke"):
            ibroke = raw_input ("Is the hardware broken or the software? ")
            if ibroke.lower() == ("hardware") or ("hard"):
                print ("...")

有一些问题。试试这个:

brand = raw_input("Please state your phone brand. ")
if brand.lower() == ("iphone"):
    iphone = raw_input ("Please state the model. ")
    if iphone.lower() == ("2g"):
        iproblem2g = raw_input ("Please state your problem. ")
        if iproblem2g.lower() in ("broken", "broke"):
            ibroke = raw_input ("Is the hardware broken or the software? ")
            if ibroke.lower() in ("hardware", "hard"):
                print ("...")
缩进在Python中非常重要。而且,“2G”永远不会匹配输入值,因为输入值是小写的。最后,在列表或元组中匹配多个值更简单,并且不会像以前那样工作(它总是返回True)

为什么总是真的?例如
如果iproblem2g.lower()==(“断开”)或(“断开”):
。这是在检查
iproblem2g.lower()==(“断开”)
(“断开”)
(“break”)
将始终为真,因为它被视为一个条件,因此整个条件将始终为真


干杯

有一些问题。试试这个:

brand = raw_input("Please state your phone brand. ")
if brand.lower() == ("iphone"):
    iphone = raw_input ("Please state the model. ")
    if iphone.lower() == ("2g"):
        iproblem2g = raw_input ("Please state your problem. ")
        if iproblem2g.lower() in ("broken", "broke"):
            ibroke = raw_input ("Is the hardware broken or the software? ")
            if ibroke.lower() in ("hardware", "hard"):
                print ("...")
缩进在Python中非常重要。而且,“2G”永远不会匹配输入值,因为输入值是小写的。最后,在列表或元组中匹配多个值更简单,并且不会像以前那样工作(它总是返回True)

为什么总是真的?例如
如果iproblem2g.lower()==(“断开”)或(“断开”):
。这是在检查
iproblem2g.lower()==(“断开”)
(“断开”)
(“break”)
将始终为真,因为它被视为一个条件,因此整个条件将始终为真


干杯

这一行可能在语义上是错误的(即,它可以编译,但不能像您预期的那样工作):

你实际上是在问

(iproblem2g.lower() == ("broken")) or ("broke")
这意味着

(iproblem2g.lower() == ("broken")) or True
这永远都是事实

您无法通过这种方式检查某事物是否为“==”两个事物。如果你想问这类问题(a==b或a==c),你应该使用:

 (iproblem2g.lower() == ("broken")) or  (iproblem2g.lower() ==  ("broke"))
或者,更多的蟒蛇

iproblem2g.lower() in ["broken","broke"]
然而,即使是这个问题也不是一个好的选择,因为它只会匹配完美的单词“break”或“break”,而不会匹配包含它的文本。或许最好问一下:

   "broken" in iproblem2g.lower() or "broke" in iproblem2g.lower()
这样你就能在任何句子中找到这个词

您可以通过创建一个简单的函数来检查一组单词中是否有一个在句子中,从而使它变得更好:

def check(words,sentence):
    for word in words:
        if word in sentence:
            return True
    return False
您甚至可以使用.lower()和.trim()进行一些预处理


最后,还有一个你没有注意到的小技巧:如果“break”是字符串,“break”总是(因为它是一个子字符串),所以你不需要同时检查这两个字符串。

这一行可能在语义上是错误的(即,它编译了,但没有按照你的预期工作):

你实际上是在问

(iproblem2g.lower() == ("broken")) or ("broke")
这意味着

(iproblem2g.lower() == ("broken")) or True
这永远都是事实

您无法通过这种方式检查某事物是否为“==”两个事物。如果你想问这类问题(a==b或a==c),你应该使用:

 (iproblem2g.lower() == ("broken")) or  (iproblem2g.lower() ==  ("broke"))
或者,更多的蟒蛇

iproblem2g.lower() in ["broken","broke"]
然而,即使是这个问题也不是一个好的选择,因为它只会匹配完美的单词“break”或“break”,而不会匹配包含它的文本。或许最好问一下:

   "broken" in iproblem2g.lower() or "broke" in iproblem2g.lower()
这样你就能在任何句子中找到这个词

您可以通过创建一个简单的函数来检查一组单词中是否有一个在句子中,从而使它变得更好:

def check(words,sentence):
    for word in words:
        if word in sentence:
            return True
    return False
您甚至可以使用.lower()和.trim()进行一些预处理


最后,还有一个你没有注意到的小技巧:如果字符串是“断开的”,那么“断开的”永远都是(因为它是一个子字符串),所以你不需要同时检查这两个字符串。

你需要缩进第2行。@pp_;我想你指的是第3行。根据我的经验,文本编辑器不是从0开始的。:)虽然这个问题与另一个问题有关系,但它不是一个重复的问题,而是一个超集。这段代码有许多问题可以解决。您需要缩进第2行。@pp_u我想您指的是第3行。根据我的经验,文本编辑器不是从0开始的。:)虽然这个问题与另一个问题有关系,但它不是一个重复的问题,而是一个超集。这段代码有很多问题可以解决。他没有注意到,因为他没有寻找它。他在看不区分大小写的平等。他没有注意到,因为他没有寻找它。他在看不区分大小写的平等。