Python 检查无效字符

Python 检查无效字符,python,for-loop,Python,For Loop,您好,我正在尝试解决以下问题: 编写代码以检查通过hinput()给定的字符串是否只包含有效字符,但在到达一个无效字符时停止。别忘了现在打印的内容会有点不同,我们也希望看到字符串的有效部分 样本输入: ATCGT(但可以是其他输入) 样本输出: 有效ATCGT file = input() for current_letter in file: if current_letter in ['A', 'T', 'G', 'C']: continue elif c

您好,我正在尝试解决以下问题:

编写代码以检查通过hinput()给定的字符串是否只包含有效字符,但在到达一个无效字符时停止。别忘了现在打印的内容会有点不同,我们也希望看到字符串的有效部分

样本输入: ATCGT(但可以是其他输入)

样本输出: 有效ATCGT

file = input()


for current_letter in file:
    if current_letter in ['A', 'T', 'G', 'C']:
        continue
    elif current_letter not in ['A', 'T', 'G', 'C']:
        break
print ('valid '+current_letter)
但是我的输出只有:有效的T

编辑:


这也可以很好地工作,这要感谢L3viathan,因为您没有按照说明进行操作。给你最后一个正确的字母。 这将实现以下目的:

file = input()
correct_letters = ""
for current_letter in file:
    if current_letter in ['A', 'T', 'G', 'C']:
        correct_letters += current_letter
    else:
        break
print ('valid  '+ correct_letters)

你没有按照指示去做。给你最后一个正确的字母。 这将实现以下目的:

file = input()
correct_letters = ""
for current_letter in file:
    if current_letter in ['A', 'T', 'G', 'C']:
        correct_letters += current_letter
    else:
        break
print ('valid  '+ correct_letters)

我认为您应该能够始终打印
有效的
,然后一次打印一个字符,直到找到一个“坏”字母:


我认为您应该能够始终打印
有效的
,然后一次打印一个字符,直到找到一个“坏”字母:



另外,您没有读取文件的内容。。。(不确定您是否打算这样做)。如果输入是
ATCFA
FAIL
,则输出是什么?我没有读取文件,只是输入。我必须承认,调用输入“file”@l3via比使用ATCFA看起来有点混乱。输出是有效的['a','T','C'],如果失败,它是有效的[]@MrButtonnn。使用几乎可以工作的解决方案,您只需要
打印(f'valid{.join(正确的字母)})
而且它应该是您想要的方式。而且您没有读取文件的内容。。。(不确定您是否打算这样做)。如果输入是
ATCFA
FAIL
,则输出是什么?我没有读取文件,只是输入。我必须承认,用ATCFA调用输入“file”@L3viathan看起来有点混乱。输出是有效的['a','T','C'],如果失败,它是有效的[]@MrButtonnn。用你几乎可以工作的解决方案,你只需要
打印(f'valid{.join(correct_letters)}')
,这应该是你想要的。如果不匹配,他想打破循环,因此,在字母条件后
ELSE:break
谢谢,我以错误的方式阅读问题,我将进行编辑。谢谢你的回答和时间,但是我仍然得到有效的T作为输出,因此仍然有一些不正确的东西我的错误再次出现,这应该具有预期的行为。如果不匹配,他希望打破循环,因此,在有条件的字母后
ELSE:break
谢谢,我以错误的方式阅读问题,我将进行编辑。谢谢你的回答和时间,但是我仍然得到有效的T作为输出,因此仍然有一些不正确的东西我的错误再次出现,这应该具有预期的行为。
file = input()

print("valid ", end="")
for current_letter in file:
    if current_letter in ['A', 'T', 'G', 'C']:
        print(current_letter, end="")
    else:
        break
print("")