程序被输入一串由空格分隔的几个单词。您需要阅读此行,形成一个列表,并确定下一个单词是否以前一个单词的最后一个字母开头(如果单词以“ь”,“ъ”或“ы”结尾,则取倒数第二个字母)。如果序列满足此规则,则需要打印“YES”,否则,打印“NO”。
TypeError: 'NoneType' object is not subscriptable但是我的代码在最后的 for 循环中给出了错误。
我的代码:
a = input().lower().split()
s = 0
for i in a:
if i == a[-1]:
print("ДА")
break
if (i[-1] == a[s + 1][0]) or ((i[-1] == ('ь' or 'ъ' or 'ы')) and i[-2] == a[s + 1][0]):
s += 1
else:
print("НЕТ")
break
如果您在 Jupyter、IPython 或类似程序中工作,其中读取字符串和执行循环被分成不同的单元,则
a在执行循环之前检查您正在迭代的对象的内容。很可能在实验过程中它作为一种元素到达了那里None。P.S. 关于与问题无关的代码的说明。
... or ... or ...从运算的角度来看,表达式总是等于第一个不为假的部分bool(...)。在您的情况下,('ь' or 'ъ' or 'ы')它等于'ь'。因此,表达式i[-1] == ('ь' or 'ъ' or 'ы')将仅检查最后一个字母与软符号是否相等。为了解决这个问题,需要重写它。例如: