[英]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 = 3
, months[intmonth-1] = 30
, nowmonth-1 = 9
, months[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.