擅长:python、mysql、java
<p>在我看来,您需要确保在第二个选项中,字符串仅由字符组成。当然,这是一个不同的要求——好的编程的一部分是识别和消除规范中的歧义</p>
<p>在此基础上,关键字选项作为一个单独的<code>if</code>语句处理得更干净,使用<code>in</code>根据关键字列表检查输入。下面的代码使用<a href="https://docs.python.org/3.7/library/functions.html#all" rel="nofollow noreferrer">all( )</a>确保列表中的非关键字条目仅由字符<code>CAGT</code>组成,并根据允许的字母检查所有单个字符。这里的测试不会检查所有这些字母是否都存在(因此<code>AGCAGC</code>将通过有效测试,尽管没有<code>T</code>)。最后,我给出了3的可除性,这是它自己的错误信息,因为在查看其他良好条目时,这可能更难发现</p>
<p>您不需要第二条input语句,因为循环将使您返回到无效输入的语句</p>
<pre class="lang-py prettyprint-override"><code>ExactKeywords = ['DOTHIS','DOTHAT']
validationcheck = False
while not validationcheck:
InputSequence = input("Input: ").upper()
if ( InputSequence in ExactKeywords ):
validationcheck = True
elif all(ch in 'CAGT' for ch in InputSequence):
if len(InputSequence)%3 == 0:
validationcheck = True
else:
print("Input string length not a multiple of 3")
else:
print("Invalid input")
</code></pre>