Python - 字符串中的单词影响结果

时间:2016-11-24 20:19:28

标签: python python-3.x

我是python的新手,我正在尝试开发一个手机故障排除程序,我问用户他们的设备有什么问题,如果我的程序检测到“湿”或“水”这个词,它会回复结果。另一个例子是'屏幕被破解'。我有一个问题,如果我输入'我的屏幕被破解'。我的代码没有检测到它。任何帮助表示赞赏!

我的代码片段:

print(60 * '-')
print('Could you describe what is wrong with your device?')
print(60 * '-')
time.sleep(1)
user_problem = input('')

if user_problem in ('water', 'waterdamage', 'rain', 'toilet', 'pool', 'sea',     'ocean', 'river',):
    print('WATERDAMAGE VARAIBLE')

elif user_problem in ('screen', 'cracked', 'shattered', 'smashed',):
    print('SCREEN VARIABLE')  

2 个答案:

答案 0 :(得分:2)

4096*300/44100 = 27.863945578231293是您用户的全部输入。您正在检查它是否属于具有这些关键字的元组。因此,如果输入为userproblem,则此字符串不属于"My phone is wet",因为它不等于任何这些字。第二个('water', 'waterdamage', 'rain', 'toilet', 'pool', 'sea', 'ocean', 'river',)中的问题相同。

正确的解决方案是询问输入中是否包含这些词的任何,这恰恰相反。你会有类似的东西:

if

或者,如果你不喜欢列表理解在这种情况下的可读性,你可以使用普通userproblem_words = userproblem.split(' ') water_related_words = ('water', 'waterdamage', 'rain', 'toilet', 'pool', 'sea', 'ocean', 'river') if (any([(word in water_related_words) for word in userproblem_words])): print('WATERDAMAGE VARIABLE') break_related_words = ('screen', 'cracked', 'shattered', 'smashed') elif (any([word in userproblem for word in break_related_words])): print('SCREEN VARIABLE')

for

答案 1 :(得分:0)

您需要更改方法,以下是如何执行此操作的示例:

print (60 * '-')
print ('Could you describe what is wrong with your device?')
print (60 * '-')
time.sleep(1)
userproblem = input('')

water = ['water', 'waterdamage', 'rain', 'toilet', 'pool', 'sea',     'ocean', 'river']
screen = ['screen', 'cracked', 'shattered', 'smashed']
for item in water:
    if item in userproblem.split(' '):
        print('WATERDAMAGE VARIABLE')
        break
for item in screen:
    if item in userproblem.split(' '):
        print('SCREEN VARIABLE')
        break