2017-12-23 9 views
1

このコードを簡略化したコード行にするにはどうすればよいですか?それはまったく可能ですか?Pythonでは、複数のステートメントの条件を三項演算子のような簡略化された行にする方法はありますか?

私はしかし、可能ラインの最低額と、コードの同じ目的を希望

inpt = input('Age: ') 
    age = int(inpt) 


if age <= 10: 
    print('Kid') 
elif age > 10 <= 20: 
    print('Teen')  
elif age > 20: 
    print('Adult') 
+1

'年齢> 10 <= 20'あなたが何を考えて実行しません。 'age> 10と10 <= 20'に相当するものに展開されます。あなたの '大人 'の場合には決して到達していないことを意味し、あなたは'キッド 'または'ティーン 'だけを印刷します。 '10 ShadowRanger

答えて

2

はのは、試してみましょう:

text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult' 

例:

age = 4 
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult' 
print(text) 
age = 12 
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult' 
print(text) 
age = 25 
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult' 
print(text) 

出力:

kid 
teen 
adult 
1

それはそれを短縮することが可能です:あなたは楽しみのためのワンライナーをやっている場合を除き、私はTeenためのテストを固定し、ちょうど行った後、元のコードに固執するだろう、と述べた

age = int(input('Age: ')) 

print('Kid' if age <= 10 else 'Teen' if age <= 20 else 'Adult') 

Adultケース平文else(前のケースが他の可能性を排除したので、> 20を再テストする必要はありません)。

0

これは推奨されていない可能性がありますが、short circuitingを使用して試してみることができます。私は個人的にこれが読みやすく(あなたの例ではなく)、余分な比較を犠牲にしていると思います。

input = input('Age: ') 
age = int(input) 


age <= 10 and print('Kid') 

age > 10 and age <= 20 and print('Teen') 

age > 20 and print('Adult') 
0

についてどう:Pythonで

age = int(input('Age: ')) 
print('Adult' if age > 20 else 'Kid' if age <= 10 else 'Teen') 

あなたは三項演算子を持っている:

a if condition else b 
関連する問題