Python使用for循环实现字符串变量name猜测的代码问题求助
解决方案
问题根因
你现有代码的逻辑是每次匹配到姓名的单个字符,就立即执行打印操作,因此会分4行输出单个字符,而非拼接成完整姓名后统一输出。
调整方案
你可以先初始化一个空字符串存储逐次匹配到的字符,所有字符匹配完成后再执行打印,修改后的代码如下:
## Guess a name name = 'Kate' # 注意原字符集存在笔误:QRZT 修正为 QRST,否则无法匹配大写S字符 char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' # 初始化存储猜测结果的空字符串 guessed_name = '' for k in range(len(name)): for i in range(len(char)): if name[k] == char[i]: guessed_name += char[i] # 所有字符匹配完成后统一打印 print('Your name is ' + guessed_name)
可选优化写法
无需嵌套循环即可实现相同效果,代码更简洁、执行效率更高:
## Guess a name 优化版 name = 'Kate' char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' guessed_name = ''.join([c for c in name if c in char]) print(f'Your name is {guessed_name}')
内容的提问来源于stack exchange,提问作者Kelsey
相关产品推荐
相关产品推荐

