2016-05-06 9 views
2

タイトルに正しい用語が使用されていますが、いくつかのコードを取得しようとしています。コードの長さを短くしてみてください。評価で私がそれを長い風にしたのかどうか、それがどのように見えるかの例とここにあります。If Pythonのステートメント(ネストされたブールステートメント)

しかし、私はの線に沿って何かをすることにより、小さいことを確認するためにしようとしていた
Valid = True 
while Valid: 
    Column = int(input("Insert Column: ")) 
    Row = int(input("Insert Row: ")) 
    if Row < 0 or Row > 9 or Column < 0 or Column > 9: 
    Valid = False 

:それは仕事をいないようですし、誰かがどのように彼らは希望を証明してくださいすることができ、なぜ

"If (Row or Column) < 0 or (Row or Column) > 0: 
    valid = False" 

誰かが説明することができますそれを解決する。私は評価を通して、私はそれらの大量を使用するので、私はifステートメントをスリム化しようとしています。

アップデート: - それはNULL値または

おかげ

答えて

3

if文を完全に削除できます。

Valid = True 
while Valid: 
    try: 
    Column = int(input("Insert Column: ")) 
    Row = int(input("Insert Row: ")) 
    Valid = Row in range(10) and Column in range(10) 
    except Exception as e: 
    print(e) 
    Valid = False 
+1

これはうまくいくが、連鎖比較 '0 <= row <10'を使う代わりに'range in range(10)'は、Python 2でうまく動作するか、同じ構造体を浮動小数点数で使用しようとするためです。 – user2357112

+2

テストの感覚を切り替え、無条件に「有効」を設定するのは良い方法です。 – user2357112

+0

これは再び有効な真の値になりませんか? – itssmegoku

2

orオペレータが短いませ値を入力すると、プログラムをクラッシュさないようにキャッチ - これも試しに入れることができます最も早い真理値を返す回路比較、真実でなければ最後の値を返す。 (Row or Column) < 0では、最初にRow or Columnが評価されます。 が0以外の場合、そのセクションはを返します。それ以外の場合は、Columnを返します。次に、この単一の値を0と比較します。他の比較の場合も同じですが、これは入力ミスがあり、(Row or Column) > 9> 0ではなく)とすることを想定しています。

また、(完全なリストではありません)次のことを試すことができます。

if not 0<=row<=9 or not 0<=column<=9 
if row not in range(10) or column not in range(10) 
if not all(0<=x<=9 for x in (row,column)) 

は、プログラムの文脈の中で最も理にかなっているいずれかを選択します。

+1

はなぜこれをしてもdownvotedされますか? – Bahrom

+0

@Bahrom - ¯\\ _(ツ))/¯ – TigerhawkT3

+0

これはTry-Catch Statementのためにどのように適応しますか? – itssmegoku

0

あなたはこれを試みることができるが、これは10個の要素[0..9]の配列を作成します。..

Valid = True 
rangeValue = range(10) 
while Valid: 
    Column = int(input("Insert Column: ")) 
    Row = int(input("Insert Row: ")) 
    Valid = Row in rangeValue and Column in rangeValue 
+0

'range()'は両端に含まれていません。 – TigerhawkT3

+0

あなたは正しいです;)!私は答えを修正しました!ありがとう –

関連する問題