Python 3.x 从For循环中生成While循环

Python 3.x 从For循环中生成While循环,python-3.x,for-loop,while-loop,Python 3.x,For Loop,While Loop,我制作了这个piec代码,它可以很好地用于以下方面: 编写代码以检查通过input()给定的字符串是否只包含有效字符,但在到达一个无效字符时停止。因此,如果字符串有效,则打印valid字符串。如果字符串无效,则打印无效的字符串,直到该点为止 但是现在我必须使用while循环来实现这个功能,但我无法完成,你们能帮我或向我解释如何将代码转换为while循环,同时保持完全相同的功能吗 file = input() invalid_letter_found = False correct_letter

我制作了这个piec代码,它可以很好地用于以下方面:

编写代码以检查通过input()给定的字符串是否只包含有效字符,但在到达一个无效字符时停止。因此,如果字符串有效,则打印valid字符串。如果字符串无效,则打印无效的字符串,直到该点为止

但是现在我必须使用while循环来实现这个功能,但我无法完成,你们能帮我或向我解释如何将代码转换为while循环,同时保持完全相同的功能吗

file = input()

invalid_letter_found = False
correct_letters = []

for current_letter in file:
    if current_letter in ['A', 'T', 'G', 'C']:
        correct_letters.append(current_letter)
        continue
    elif current_letter != ['A', 'T', 'G', 'C']:
        invalid_letter_found = True
        break
if invalid_letter_found == True:
    print(f'invalid {"".join(correct_letters)}')
else:
    print(f'valid {"".join(correct_letters)}')
该程序将在查询中给出与上述程序完全相同的输出
file=input()
n=len(文件)
lst=[]
对于文件中的alp:#这会将字符串转换为列表,如果不想使用for循环,可以使用任何其他方法
lst.append(alp)#转换到此结束
无效的字母\u找到=错误
正确的字母=[]
i=0
而i
尽管您需要使用while循环的唯一原因是如果这是一个家庭作业问题-这里有一个正确方向的提示:

  • 您可以使用
  • 当前字母=文件[0]
    file=文件[1:]
    
  • 您可以使用字符串长度作为while循环的条件-一旦字符串长度为零,您就完成了:
  • while len(文件):
    
    Python的“for”和“while”语句都用于构造循环。“for”语句按任何序列(列表或字符串)中的项在序列中出现的顺序对其进行迭代。“while”语句通常涉及一个或多个变量,这些变量在循环开始或进入循环之前初始化,然后在循环中的某个位置更新。要解决您的问题,请参见1。确定迭代列表2的方法。查看while True循环的构造以及如何最好地结束循环感谢您的建议,现在我了解了如何使其工作,是的,您是对的,这确实是一个家庭作业问题……除非您在while循环操作中减小文件大小,否则此退出标准不会生效work@itprorh66没错,这就是为什么我包括了字符串切片操作
    current_letter=file[0]
    来获取第一个字母,以及
    file=file[1:][/code>来将字符串大小减小一。基于最初的代码,我认为很明显这些都在while循环中,因为这就是您使用当前字母的地方。。。但这是一个公平的观点。
    
    file = input()
    n=len(file)
    lst=[]
    for alp in file:  # this will convert the string to list, you can use any other method if you don't want for loop
        lst.append(alp) #Here the conversion ends
    invalid_letter_found = False
    correct_letters = []
    i= 0
    while i < n:
        if lst[i] in ["A", "T", "G", "C"]:
            correct_letters.append(lst[i])
            i += 1
            continue
        elif lst[i] != ["A", "T", "G", "C"]:
            invalid_letter_found = True
            break
    if invalid_letter_found == True:
        print(f'invalid {"".join(correct_letters)}')
    else:
        print(f'valid {"".join(correct_letters)}')