2011-02-13 10 views
0

は、あなたがこの非常に一般的なタスクを達成するためにあるとします。文字列が与えられPython - わかりやすくするために例外をスキップしますか?

を、我々は フロントは 文字列の最初の3つの文字であると言うでしょう。文字列の長さが 3未満の場合、正面は となります。正面のコピーを3 の新しい文字列で返します。 Pythonは黙っ境界の例外のうち、スキップリストとして

今、一つの解決策が考えられます。

def front(string): 
    return 3 * string[:3] 

これは、与えられた文字列の長さは、長さ3未満の場合でも動作しますが、これは良い習慣ですか?

+5

Pythonのリストは、自動的に境界外の例外をスキップしません。 'string [3]'は 'len(string)== 3'なら' IndexError'を送出します。リストをスライスして範囲を越えることが許されているときだけ、「沈黙」する必要があるすべての例外が発生するのではないかと疑う。 –

答えて

4

はい、あなたの要件がまさにそれであれば、まったく良い習慣です。 :)

return 3 * string[:3] 
+0

+1は「あなたの要件がまさにそれであれば」です。その声明は多くのレベルで働いています:) – Macke

+0

しかし、それは下に高価な例外を生成しないのですか?私はJavaのバックグラウンドから来ています。そこには本当に悪い習慣があります。一方、彼らは非常に異なった考え方を持っています:-)。 – helpermethod

+1

私はそれがなぜ悪い習慣Javaであるのか分かりませんが、リストスライスをPythonでどのように使用できるかという定義には欠けています。下限を省略すると、開始点になります。上限を省略すると、リストの長さになります。また、上限が長さより大きい場合、定義/デザインによって長さが切り捨てられます。 Python asは、負のリストインデックスを許可します。 –

関連する問題