描述

用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是’A’和’F’,过道位置是’C’和 ‘D’,中间位置是’E’。
每个车厢座位排数是1-17,字母不区分大小写。

输入格式

输入一个数字和字母组合成的字符串

输出格式

‘窗口’或’过道’ 或’中间’或’输入错误’

首先判断一下输入的座位是否是一个合法的座位号。
题目要求座位排数是1-17:

  1. 1 <= int(s[:-1]) <= 17

最后一位代码座位的字母应该只能是 ‘ABCDFabcdf’ 中的一个,或者先将输入转大写,则字母只能属于’ABCDF’中的一个。

  1. s[-1] in 'ABCDF'
  2. # 或
  3. s[-1] in 'ABCDFabcdf'

如果输入的是合法的座位号,再判定是窗口、过道还是中间,根据最后一个字母就可以判定了。
可以将判定合法性与判定座位在一个函数 中实现 :

  1. def seat(s):
  2. if 1 <= int(s[:-1]) <= 17 and s[-1] in 'ABCDFabcdf':
  3. if s[-1] in 'AaFf':
  4. return '窗口'
  5. elif s[-1] in 'CcDd':
  6. return '过道'
  7. elif s[-1] in 'Bb':
  8. return '过道'
  9. else:
  10. return '输入错误'
  11. if __name__ == '__main__':
  12. s = input()

可以将两部分功能分别用一个函数实现,每个函数只实现一个功能,每个函数的逻辑也更简单。

  1. def seatNumbers(seat): # 判定座位是否合法
  2. if 1 < int(seat[:-1]) <= 17 and seat[-1] in 'ABCDF':
  3. return True
  4. else:
  5. return False
  6. def windowOrAisle(seat): # 判定是窗口、过道还是中间
  7. if seat[-1] in 'AF':
  8. return '窗口'
  9. elif seat[-1] in 'CD':
  10. return '过道'
  11. elif seat[-1] == 'B':
  12. return '中间'
  13. if __name__ == '__main__':
  14. seat = input().upper()
  15. if seatNumbers(seat):
  16. print(windowOrAisle(seat))
  17. else:
  18. print('输入错误')