前提・実現したいこと
HackerRank で Python の問題を解いていました。
(問題)
入力された数値nが
nが奇数であれば、”Weird”
偶数であり、2<=n<=5であれば、” Not Weird”
偶数であり、6<=n<=20であれば、”Weird”
偶数であり、20<nであれば、” Not Weird” と表示しなさい。
n の範囲は、1<=n<=100とする。
プログラムを書いて実行し、無事に意図どおりのプログラムができたのですが
動作確認でわからないところがあり質問しました。
該当のソースコード
<修正前> 不正解
python
1 n = int(input().strip()) 2 3 if((n%2 ==0) & 2<=n<=5): 4 print("Not Weird"); 5 elif((n%2 ==0) & 6<=n<=20): 6 print("Weird"); 7 elif((n%2 ==0) & 20 < n): 8 print("Not Weird"); 9 else: 10 print("Weird")
<修正後> 仕様通りで、正解
python
1 n = int(input().strip()) 2 3 if((n%2 ==0) & (2<=n & n<=5)): 4 print("Not Weird"); 5 elif((n%2 ==0) & (6<=n & n <=20)): 6 print("Weird"); 7 elif((n%2 ==0) & (20 < n)): 8 print("Not Weird"); 9 else: 10 print("Weird")
質問
if((n%2 ==0) & 2<=n<=5):
と if((n%2 ==0) & (2<=n & n<=5)):
では動作に違いがおきました
。
修正前では3を入力値としたところ、"Weird"と表示されると思ったのですが"Not Weird"と表示されました。
また、29を入力値とすると"Not Weird"と表示されました。
if((n%2 ==0) & 2<=n<=5):
と if((n%2 ==0) & (2<=n & n<=5)):
の &条件の()括り に違いがあるとは思うのですが、なぜ動作に違いが起きるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/07 21:54
2020/08/08 00:18