3

Noob は自分のコードを改善する方法を知りたがっています。

a, b, c = string.split(enteredDate, "/")

m31s = [1, 3, 5, 7, 8, 10, 12]
m30s = [4, 6, 9, 11]

for x in range(len(m31s)):
    x = int(m31s[x])
    if x != int(a) and b != 31:
         print "Invalid date."
for x in range(len(m30s)):
    et cetera...

明確でない場合は、入力された日付が有効かどうかをテストしています。これはプログラムのほんの一部です。主な質問は次のとおりです: 要素がリスト内のいずれかの要素に一致するかどうかをテストする最良の方法は何ですか?

私の方法は機能します...しかし、これを行うためのより良い方法があると思います。次のようなものを想定しているため、タイトルでブール値と言いました。

if secretCode(m31s, int(a)) == True:

夢物語かもしれません。ちょっと興味があるんだけど。

時間を割いて助けてくれた人に感謝します。

4

3 に答える 3

6

構文を使用できますif elem in list。例えば:

>>> if 1 in [1,2,3,4,5]:
...     print 'found 1'
... 
found 1
于 2012-10-19T20:08:46.363 に答える
2

You should use python datetime library.

try:
    datetime.datetime.strptime(enteredDate, "%m/%d/%Y")
except:
    print 'Invalid date'
于 2012-10-19T20:19:48.480 に答える
1

私は提案します:

  • 交換

       a, b, c = string.split(enteredDate, "/")
    

       a, b, c = enteredDate.split("/")
    

    それはそれほど重要ではありませんが、最初のバージョンはstringモジュールをインポートする必要があり、2番目のバージョンはそうではありません。

  • に置き換えint(m31s[x])ますm31s[x](あなたはそれらがintすでにあることを知っています、なぜ余分なのint( ... )ですか?
  • secretCode( ... )trueまたはfalseを返す場合は、と書くだけif secretCode( ... ):で、と比較する必要はありません== True
  • を呼び出す代わりにint(a)int(b)または単にintであることがわかっているので、後でそれらint(c)を記述a, b, c = map(int, enteredDate.split("\"))して忘れることができます。int( ... )さらに、それらがintでない場合は、コードを不必要に進めることなく、すぐに例外が発生します。
于 2012-10-19T20:18:54.407 に答える