首页 > 解决方案 > 在Python中循环检查字符串中的字母

问题描述

我想创建一个循环,直到创建了一个以“A”开头并以“Z”结尾的随机字符串。

import string
from random import choice

def random_string():
    """ Generates a 5 letter random string. """
    rs = ''.join(choice(string.ascii_uppercase) for _ in range(5))
    print(rs)
    
    

while random_string()[-1] != "Z" and random_string()[0]) != "A":
    print("keep going")
return random_string
      

到目前为止,我有这个,我在 while 循环检查第一个和最后一个字母时遇到了麻烦。有没有更简单(和正确)的方法来测试这个?

提前致谢。

标签: pythonwhile-loop

解决方案


如果您想让字符串中的第一个和最后一个字母相同,为什么不随机化中间的 3 个字符。

每次运行都会有一个成功的结果。

pre = 'A'
suf = 'Z'
n = 3

result = pre + ''.join(random.choice(string.ascii_uppercase) for i in range(n)) + suf

#'ACUUZ'

如果您想通过while循环来实现这一点,您需要确保您return在循环之外,并且您的循环在您的条件不满足时运行。

 def random_string():
    rs = ''.join(choice(string.ascii_uppercase) for _ in range(5))
    while rs[-1] != "Z" or rs[0] != "A":
        rs = ''.join(choice(string.ascii_uppercase) for _ in range(5))
    return rs

有了上面,我们在while循环之后定义了我们的返回,确保它只在找到匹配项时返回。

输出

for i in range(10): 
    print(random_string())

ASKPZ
AHOKZ
AYWQZ
ASHYZ
ACENZ
ASIVZ
ADTVZ
AZWHZ
AAHHZ
AKZHZ

推荐阅读