描述
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是’A’和’F’,过道位置是’C’和 ‘D’,中间位置是’E’。
每个车厢座位排数是1-17,字母不区分大小写。
输入格式
输出格式
‘窗口’或’过道’ 或’中间’或’输入错误’
首先判断一下输入的座位是否是一个合法的座位号。
题目要求座位排数是1-17:
1 <= int(s[:-1]) <= 17
最后一位代码座位的字母应该只能是 ‘ABCDFabcdf’ 中的一个,或者先将输入转大写,则字母只能属于’ABCDF’中的一个。
s[-1] in 'ABCDF'# 或s[-1] in 'ABCDFabcdf'
如果输入的是合法的座位号,再判定是窗口、过道还是中间,根据最后一个字母就可以判定了。
可以将判定合法性与判定座位在一个函数 中实现 :
def seat(s):if 1 <= int(s[:-1]) <= 17 and s[-1] in 'ABCDFabcdf':if s[-1] in 'AaFf':return '窗口'elif s[-1] in 'CcDd':return '过道'elif s[-1] in 'Bb':return '过道'else:return '输入错误'if __name__ == '__main__':s = input()
可以将两部分功能分别用一个函数实现,每个函数只实现一个功能,每个函数的逻辑也更简单。
def seatNumbers(seat): # 判定座位是否合法if 1 < int(seat[:-1]) <= 17 and seat[-1] in 'ABCDF':return Trueelse:return Falsedef windowOrAisle(seat): # 判定是窗口、过道还是中间if seat[-1] in 'AF':return '窗口'elif seat[-1] in 'CD':return '过道'elif seat[-1] == 'B':return '中间'if __name__ == '__main__':seat = input().upper()if seatNumbers(seat):print(windowOrAisle(seat))else:print('输入错误')
