1

私は持っている:

*MONTHS = ("1 月", "2 月", "3 月", ... "12 月") (すべての月を含む)

月の 3 文字の略語を入力して、その月のインデックス値を取得することになっています。これまでのところ、私は持っています:

for M in MONTHS:
    shortMonths = M[0:3]
    print shortMonths

1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

shortMonths の出力月に引用符がないことに気付きました。これにより、略語が shortMonths に含まれているかどうかをテストできません。

MMM =「2月」

print list(shortMonths).index(MMM) + 1 # リストの最初の月である 1 月が月 0+1 = 1 であることを考慮して、すべての月について

ValueError: 'Feb' がリストにありません

関数を作成せずにこれを修正するにはどうすればよいですか? また、これは宿題の問題です。また、辞書、地図、日時の使用は許可されていません

4

5 に答える 5

1

リストになりたいように聞こえますshortMonthsが、リストに文字列を割り当てているだけです。

私はあなたがこのようなものが欲しいと思います:

shortMonths = [] # create an empty list
for M in MONTHS:
    shortMonths.append(M[0:3]) # add new entry to the list
print shortMonths # print out the list we just created

またはリスト内包表記を使用します:

# create a list containing the first 3 letters of each month name
shortMonths = [M[0:3] for M in MONTHS]
print shortMonths # print out the list we just created
于 2013-10-17T06:02:01.867 に答える
0
abbr = raw_input("Enter the month abbr:")


months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
months_abbr = [month.lower()[:3] for month in months]
index = months_abbr.index(abbr.lower())
if index >= 0:
    print "abbr {0} found at index {1}".format(abbr, index)
else:
    print "abbr {0} not found".format(abbr)
于 2013-10-17T09:41:13.150 に答える
0

それは簡単です:

>>> months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
>>> search = "Jan"
>>> months.index([i for i in months if i[:3].lower() == search.lower()][0])+1
1
>>> # Or
... def getmonth(search):
...    for i in months:
...        if i[:3].lower() == search.lower():
...            return x.index(i)+1
>>> getmonth("Feb")
2

エラーをキャッチするには:

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
while True:
    search = ""
    while len(search) != 3:
        search = raw_input("Enter first 3 letters of a month: ")[:3]
    month = [i for i in months if i[:3].lower() == search.lower()]
    if not month: # Not in the list, empty list: []
        print "%s is not a valid abbreviation!"%search
        continue
    print months.index(month[0])+1
于 2013-10-17T09:10:35.013 に答える
0

shortMonths はリストではなく文字列です。以下のようにしてください。

shortMonths = []
  for M in MONTHS:
    shortmonths.append(M[0:3])
于 2013-10-17T06:11:44.320 に答える