Python嵌套循环:剧院座位列ASCII转换逻辑及循环条件疑问
剧院座位列字符逻辑通俗解析
核心:字符与ASCII码的转换逻辑
咱们先把字母和数字的对应关系掰明白:
- 每个英文字母都对应一个唯一的数字(ASCII码),比如
A对应65,B对应66,以此类推。 ord('字符')是把字母转成对应的数字,chr(数字)是把数字转回字母。
比如你输入列数num_cols=5:
ord('A') + num_cols就是65+5=70,转成字母是F。
为什么用<而不是<=?
内层循环的条件是col < chr(ord('A') + num_cols),拿刚才num_cols=5的例子来说,就是col < 'F'。
- 循环里的
col从A开始,依次变成B、C、D、E,这正好是5个列,完全匹配你输入的num_cols=5。 - 如果换成
<=,那循环会跑到col='F',就多出来一个座位(比如1F),这就超出了要求的列数。
简单说就是:ord('A') + num_cols算出来的是第num_cols+1个字母,循环条件用<,就能刚好取到前num_cols个字母,不多不少。
对应代码拆解
num_rows = int(input()) num_cols = int(input()) row = 1 while row <= num_rows: col = 'A' # 这里的终止值是第num_cols+1个字母,用<保证只取前num_cols个 while col < chr(ord('A') + num_cols): print('{}{}'.format(row, col), end=' ') # 每次把col往后挪一个字母 col = chr(ord(col) + 1) row += 1 print()
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

