1

したがって、10 月 15 日以降の任意の日付から曜日を割り出すには、単純な算術演算を使用できます。私の問題は、ファイルから日付 (たとえば 2009-06-12) を読み取ったことです。式:

w = (d + [2.6 * m - 0.2] + Y + [Y / 4] + 5 * C + [C / 4] ) % 7

日付は yyyy-mm-dd の形式で、コードは次のようになります。

count = 5
f = open('/Users/student/Desktop/Harry.txt').readlines()[count]
Y = f[2:4]
C = f[:2]
m = f[5:7]
d = f[8:10]
w = (d + [2.6 * m - 0.2] + Y + [Y / 4] + 5 * C + [C / 4] ) % 7
if w == 0:
    print (f, "is a Sunday")
elif w == 1:
    print (f, "is a Monday")
elif w == 2:
    print (f, "is a Tuesday")
elif w == 3:
    print (f, "is a Wednesday")
elif w == 4:
    print (f, "is a Thursday")
elif w == 5:
    print (f, "is a Friday")
elif w == 6:
    print (f, "is a Saturday")

明確にするために:

w = day of the week counting from Sunday = 0 Monday = 1
d = the day of the month (for e.g. 28th 13th)
m = month number where March = 1 etc.
Y = last 2 digits of year
C = first 2 digits of year

それでも、このエラーが発生します

Traceback (most recent call last):
  File "/Users/student/Documents/workspace/Tutorial Challenges/src/Day_Of_The_Week.py", line 7, in <module>
    w = (d + [2.6 * m - 0.2] + Y + [Y / 4] + 5 * C + [C / 4] ) % 7
TypeError: can't multiply sequence by non-int of type 'float'

助けていただければ幸いです。

4

2 に答える 2

1

YCm、およびdはすべて文字列です。最初にそれらをintに変換したい:

Y = int(f[2:4])
C = int(f[:2])
...

しかし、その方程式が機能することは確かですか? 整数以外の平日がたくさん生成されるようです。あなたはそれを間違ってコピーしたかもしれません。また、括弧は Python のグループ化演算子ではありません。それらはリスト構築構文です。for の式では、これらの角かっこをかっこに置き換える必要がありますw。(または、これらのブラケットはフロア演算子であると想定されていましたか? もしそうならmath.floormathモジュールから、またはint切り捨てが問題ない場合にのみ必要です。)

于 2013-07-15T04:51:15.867 に答える
0

上記のユーザーが言ったように、string から int に変換したいと考えています。ただし、これは datetime モジュールを使用するのに理想的な場所です。これを使用して、日時の形式が yyyy-mm-dd であることを指定し、モジュールを使用して情報を日時としてロードできます。

http://docs.python.org/2/library/datetime.html

于 2013-07-15T04:55:09.633 に答える