Python 如何在格式化列表中删除tup[3]以打印日历类型输出?

Python 如何在格式化列表中删除tup[3]以打印日历类型输出?,python,leap-year,Python,Leap Year,请复制并保存此code.py,然后输入(不带引号)一天,如“Mer”,然后输入非闰年,如2019年,请注意,打印输出中仍显示闰日。如果元组[3]是闰年,我需要删除它,然后让它在元组[3]从列表中排除后打印“tup”列表 EDIT更改确认回答者提到的所有编辑会产生好的代码,我发现错误是我错误地将闰日范围定为70,而为了让代码正常工作,它应该是69。谢谢。 import numpy as np def make_calendar(year, start_day): tup = [('

请复制并保存此code.py,然后输入(不带引号)一天,如“Mer”,然后输入非闰年,如2019年,请注意,打印输出中仍显示闰日。如果元组[3]是闰年,我需要删除它,然后让它在元组[3]从列表中排除后打印“tup”列表

EDIT更改确认回答者提到的所有编辑会产生好的代码,我发现错误是我错误地将闰日范围定为70,而为了让代码正常工作,它应该是69。谢谢。

 import numpy as np
 def make_calendar(year, start_day):
    tup =   [('Early Winter', range(1, 37, + 1)),
            ('Mid Winter 37,', range(37, 1, + 1)),
            ('Late Winter   ', range(38, 71, + 1)),
            ('Leap Day      ', range(70, 69 + 1)),#tup[3] is this line i need to delete if not leap year
            ('Late Winter   ', range(71, 74, + 1)),   
            ('Early Spring  ', range(1, 37, + 1)),
            ('Mid Spring 37,', range(37, 1, +1)),
            ('Late Spring   ', range(38, 74, + 1)),
            ('Early Summer  ', range(1, 37, + 1)),
            ('Mid Summer 37,', range(37, 1, +1)),
            ('Late Summer   ', range(38, 74, + 1)),
            ('Early Autumn  ', range(1, 37, + 1)),
            ('Mid Autumn 37,', range(37, 1, +1)),
            ('Late Autumn   ', range(38, 74, + 1)),
            ('Early Fall    ', range(1, 37, + 1)),
            ('Mid Fall 37,  ', range(37, 1, +1)),
            ('Late Fall     ', range(38, 74, + 1))];
    week = ['Mer', 'Ven', 'Ear', 'Mar', 'Jup', 'Sat', 'Ura', 'Nep', 'Plu']
    start_pos = week.index(start_day)
    def is_leap(year): 
        if (not year%4 and year%100 or not year%400): # algorithm to determine leap year
            return True
    if not is_leap(year):
        del tup[3]
    for month, days in tup: 
    # Print month title
        print('{0} {1}'.format(month, year).center(20, ' '))
        # Print Day headings
        print(''.join(['{0:<3}'.format(w) for w in week]))
        # Add spacing for non-zero starting position
        print('{0:<3}'.format('')*start_pos, end='')

        for day in days:
            # Print day
            print('{0!s:<3}'.format(day), end='')
            start_pos += 1
            if start_pos == 9:
                # If start_pos == 9 (Sunday) start new line
                print()
                start_pos = 0 # Reset counter
        print('\n')
start_day=(input('Enter start day of the year Mer,Ven,Ear,Mar,Jup,Sat,Ura,Nep,Plu'))
year=int(input('Enter Year'))       
make_calendar(year, start_day)
将numpy导入为np
def make_日历(年份、开始日期):
tup=[(‘初冬’,范围(1,37,1)),
('Mid Winter 37',范围(37,1,1)),
(‘冬末’,范围(38,71,+1)),
('Leap Day',范围(70,69+1)),#tup[3]如果不是闰年,我是否需要删除这一行
(‘冬末’,范围(71,74,+1)),
(‘早春’,范围(1,37,1)),
('Mid Spring 37',范围(37,1,1)),
(‘晚春’,范围(38,74,+1)),
(‘初夏’,范围(1,37,+1)),
(“仲夏37”,范围(37,1,1)),
(‘夏末’,范围(38,74,+1)),
(‘初秋’,范围(1,37,1)),
(‘中秋37’,范围(37,1,+1)),
(‘晚秋’,范围(38,74,+1)),
(‘早秋’,范围(1,37,+1)),
('Mid Fall 37',范围(37,1,1)),
(‘晚秋’,范围为(38,74,+1));
周=['Mer','Ven','Ear','Mar','Jup','Sat','Ura','Nep','Plu']
开始位置=周索引(开始日期)
def是_leap(年份):
if(非第%4年和第%100年或非第%400年):#确定闰年的算法
返回真值
如果不是闰年:
德尔图普[3]
对于月份,tup中的天:
#打印月份标题
打印({0}{1})。格式(月、年)。中心(20,))
#打印日标题

print(“”.join(['{0:此问题可能与以下代码行有关:

year=int(input('Enter Year')),
尾随逗号表示
year
是元组,而不是纯整数

如果曾经调用过函数
is_leap()
,那么它将演示所声明的错误行为

但是,我必须指出,
is_leap()
函数已经定义,但从未调用过,因此我不得不认为您没有向我们展示真正的代码

更新: 根据你的帖子,这是
is_leap()
的定义:

正如您所看到的,对
的调用是_leap()
包含在函数本身中,由于这是整个代码中对该函数的唯一调用,因此从未调用它


也许这是一个缩进错误,
if is_leap(year)
块实际上意味着超出一个级别?

提示:什么是
year
?它来自何处?打印出值,您可以缩小错误范围。此代码不会显示所声称的错误。如果
is_leap()
曾被调用过,但它没有被调用。该函数已定义但从未被调用。您确定这是实际代码吗?作为新用户,请从开始阅读。您的问题尚未准备好在此处提问,因为您首先需要提取a,这可能是它将被关闭的原因。年份来自输入的输入。示例2019但是日历打印不正确。if is_leap(year):return false del tup[3]…函数仍然没有返回所需的输出,该输出将打印没有“(“闰日”,范围(70,70,+1))的日历,'在第6行,我如何调用is_leap以使日历在没有闰日的情况下打印?代码打印良好错误不再显示,但它只是在没有del-tup的情况下打印[3],如果is_leap(year)和del-tup[3]的情况下,is_leap(year)flasei未涉及仍被忽略,并且未返回2019年日历。它仍在打印以闰日行为特征的闰年日历[3]第二,请用您当前的代码更新问题。我要再次指出,原始代码不可能有声明的错误,因此您一定发布了错误的代码。对不起,我更新了代码。错误消失了,因此我将问题和代码编辑为当前更新版本。如果函数为_leap(year)如果为false,仍然不会返回del-tup(3)。此外,年份定义为倒数第二行的输入类型,但在if-is_-leap(year)return-false del-tup[3]更新过程中,不知何故,它无法正常工作。我成功了。谢谢!!+REP
def is_leap(year): 
    if (not year%4 and year%100 or not year%400): # **algorithm to determine leap year**
        return True
    if is_leap(year):
        return False
        del tup[3] #**it still prints 2019