A問題 Meal Delivery
1 2 3 4 5 |
x,a,b = map(int,input().split()) if abs(x-a) < abs(x-b): print('A') elif abs(x-a) > abs(x-b): print('B') |
B問題 Not Found
1 2 3 4 5 6 7 8 |
s= input() list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] for i in list: if not i in s: print(i) exit() print('None') |
別解 chr関数、ord関数
1 2 3 4 5 6 7 |
s = input() for i in range(26): t = chr(ord('a') + i) #1 if not t in s: print(t) exit() print('None') |
初めにアルファベットを定義するのがちょっと面倒でした。もっと良い解答があるんじゃないかと探していたところ、見つかりました。
ord関数というものがあるようです。
ord関数は引数に指定した文字列をUnicodeポイントに変換する関数。
chr関数は数値で指定した文字コードを返す関数。
アルファベットなどの各文字にはUnicodeポイントと呼ばれる数字が振られており、文字の大小比較などもUnicodeポイントをもとに行われているようです。
#1では”a”のUnicodeポイントを取得してtに代入しています。
コードを見るに、アルファベットのUnicodeポイントはaからzまで1ずつ増えていくので、26回のループの中で最初にaのUnicodeポイントを取得して2回目以降はループした回数分だけ数字を加えているのだと思います。
コメント