我是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')
答案 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