簡體   English   中英

在列表Python中選擇元素

[英]Selecting elements in list Python

我試圖在包含每個月中天數的列表中選擇元素,並將這些天添加到包含總計的變量中。

from datetime import date
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
inmonth = str(float(input("month")))
intmonth = int(inmonth[0])
nowmonth = (date.today().month)
days = 0

if intmonth < nowmonth:
    for c in range(months[intmonth-1], months[nowmonth-1]):
        days = days + months[c]
print(days)

編輯:

好的,我已經解決了輸入的問題,但是使用此代碼,幾天沒有添加任何東西,為什么有想法?

謝謝。

除了Kieleth指出的問題外,循環還沒有使用您期望的索引。 我們現在在10月( nowmonth = 10 ),說我4月回答4

for c in range(months[intmonth-1], months[nowmonth-1]):

給出intmonth-1 = 3months[intmonth-1] = 30nowmonth-1 = 9months[nowmonth-1] = 31 => c獲得值30

所以你的代碼應該是:

from datetime import date
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
intmonth = int(input("month")) # fixes the problem stated by Kieleth
nowmonth = (date.today().month)
days = 0

if intmonth < nowmonth:
    for c in range(intmonth-1, nowmonth-1):
        days = days + months[c]
print(days)

但是找到那些類型或錯誤的方法(如果很簡單): 打印是您的朋友

如果您只是寫過:

from datetime import date
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
inmonth = str(float(input("month")))
intmonth = int(inmonth[0])
print(inmonth, intmonth) # control input
nowmonth = (date.today().month)
days = 0

if intmonth < nowmonth:
    for c in range(months[intmonth-1], months[nowmonth-1]):
        print (c, days) # a spy per iteration
        days = days + months[c]
print(days)

顯然您沒有經歷循環

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM