[Python程序设计] 2020年10月30日 Python 综合作业

7-2 棋盘有地雷的八皇后问题

  • 经典回溯法的八皇后。在检测可用位置时跳过地雷位置即可。
  • 时间卡的不严,如果想要效率可以对整个棋盘打表。
def main():
    # 每个queen在的位置是(idx,queenCol(idx))
    x,y = map(int,input().split())
    x -= 1
    y -= 1

    solCount = 0

    queenCol = [-1] * 8
    def isok(row:int,col:int):
        if row == x and col == y:
            return False
        for (row0, col0) in enumerate(queenCol):
            if col0 == -1:
                continue
            if row == row0 or col == col0:
                return False
            if row - row0 == col - col0 or row - row0 == col0 - col:
                return False
        return True

    def recur(row:int):
        nonlocal  solCount
        if row == 8: # 完成了一组
            solCount 
### 回答1: 实现该功能的思路是根据输入的期,通过编程计算出对应的星期几,并将结果显示出来。下面分别介绍等价类和边界值测试的设计。 1. 等价类测试设计: 等价类测试是将所有可能的输入情况划分为若干等价类,每个等价类中的输入数据被认为具有相似的特征,从而只需从每个等价类中选择具有代表性的值进行测试。对于计算星期几的功能,可以将等价类划分为下面几个: - 有效期:合法的期,如202211。 - 无效期:非法的期,如2022230。 - 闰期:闰中的期,如2020229。 - 非闰期:非闰中的期,如2021228。 2. 边界值测试设计: 边界值测试是选择输入数据的边界情况进行测试,因为边界值通常是对系统行为影响最大的情况。根据期计算星期几的功能,可以选择以下边界值进行测试: - 最小期:系统所能处理的最小期,如197011。 - 最大期:系统能处理的最大期,如2038118。 - 闰229:闰中的最大期,如2020229。 - 非闰228:非闰中的最大期,如2021228。 通过等价类测试和边界值测试,可以覆盖到各种常见的输入情况,从而验证程序的正确性和稳定性。在测试中还要考虑特殊期,如公历1582104之前的期,这些期需要特殊的处理方法。 ### 回答2: 设计一个程序,当输入期时,能够显示该期对应的星期几。可以采用以下步骤来实现这个程序: 1. 设计一个函数,接收用户输入的期参数,并计算出该期对应的星期几。首先,需要判断输入的期是否合法,即份是否在合理范围内,份和期是否在合理范围内。如果输入的期不合法,程序应该返回错误提示信息。然后,可以采用蔡勒公式(Zeller's Congruence)来计算该期对应的星期几。 2. 设计一个函数,用于将计算出的星期几信息进行显示。可以采用一个包含七个元素的列表(['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期'])来存储星期几信息,其中索引0对应星期一,索引1对应星期二,依此类推。根据计算得到的星期几,输出对应的字符串。 3. 编写一个主函数,调用第一步中设计的函数来计算星期几,并调用第二步中的函数来显示结果。 例如,当用户输入期为"2022-04-15"时,程序将输出"星期五"。 然后,可以使用等价类和边界值法进行测试,以确保程序在不同情况下的正确性。等价类测试可以将输入的期划分为合法和非法两个等价类。在合法的等价类中,可以进一步划分为包括闰和不包括闰两个等价类。边界值测试可以针对闰和非闰的四个临界点进行测试,即份的上下限(通常为1和9999)、份的上下限(1和12)以及期的上下限(1和31),测试程序在这些边界值处的输出是否正确。 通过等价类和边界值法测试,可以提高程序的稳定性和可靠性,确保在各种情况下都能正确输出星期几信息。 ### 回答3: 要实现当输入期时显示星期几的功能,可以设计一个程序来实现。以下是设计思路: 1. 首先,需要获取用户输入的期。可以通过程序提示用户输入期,然后将其保存为一个字符串或期对象。 2. 接下来,需要将输入的期转换为对应的星期几。可以利用编程语言中的期处理函数,例如Python中的datetime模块或Java中的Calendar类等,来获取输入期对应的星期几。 3. 最后,将获取到的星期几输出给用户。可以通过控制台输出、弹窗、网页显示等方式呈现给用户。 在编写完程序后,可以使用等价类和边界值法进行测试。 1. 等价类测试:按照输入期的合法性,可以将输入期分为以下几个等价类: - 合法期:例如202211、20221231等。 - 非法期:例如2022230、2022131等。 - 非法格式:例如20220101、2022-1-1等。 在测试中,需要确保程序能正确处理合法期,正确返回对应的星期几。同时,需要测试非法期和非法格式输入情况,确保程序能正常处理这些异常情况,并给出适当的错误提示。 2. 边界值测试:在等价类中,还可以选取一些边界值进行测试,以验证程序的健壮性。例如: - 输入期为最小允许期和最大允许期,例如000111和99991231。 - 输入期为初、末和闰等特殊期。 通过边界值测试,可以确保程序在边界情况下仍能正确处理。例如,确保程序能正确处理闰的229,以及1231的情况。 总之,通过以上的设计思路和测试方法,可以设计出一个实现输入期显示星期几的程序,并对其进行充分的测试验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值