使用FOR循环输出对应CSV值的Python代码优化求助
简化代码并实现正确格式输出的解决方案
优化后的代码
# 获取用户输入并做合法性校验 while True: print('Give me a number that\'s 0 - 50:') try: user_num = int(input()) if 0 <= user_num <= 50: break print('Number must be between 0 and 50. Try again.') except ValueError: print('Please enter a valid integer.') # 配对州名与人口,按要求格式输出 for name, population in zip(state_names[:user_num], state_populations[:user_num]): # 左对齐州名(占10字符宽度),保证格式整齐 print(f'{name:<10} {population}')
关键改进点
- 移除冗余代码:原代码中两个for循环完全没必要,直接通过切片
state_names[:user_num]即可获取前user_num个元素,无需循环判断。 - 配对数据输出:使用
zip()函数同时遍历州名和人口的切片,直接获取每一组对应的数据。 - 格式化输出:利用f-string的
<10格式控制,让州名左对齐并占用固定宽度,确保输出格式与期望一致。 - 输入校验:增加循环校验逻辑,避免用户输入非整数或超出0-50范围的数值,提升程序健壮性。
测试效果
当输入为3时,输出结果:
Michigan 9986857 Georgia 10617423 Ohio 11689100
内容的提问来源于stack exchange,提问作者Jake A
相关产品推荐
相关产品推荐

