每日一题:统计天数

Description:
根据一些日期,以及日期上所做的标记,按条件统计其天数。
Input:
输入数据含有不多于50个的具有格式“Mon.DD YYYY”的日期,有些日期后面可能标有*,每个日期占一行。
Output:
统计任何月份中凡是25号的日期数,如果25号这一天后面标有*,则该天应加倍计算.
Sample Input:
0ct.25 2003 
0ct.26 2003 
Sep.12 2003*
Juy. 25 2002*
Sample Output:
3

代码一:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
    int count = 0;
    string date;
    while (getline(cin, date)) {
        int day = stoi(date.substr(4, 2));
        if (day == 25) {
            count++;
            if (date.back() == '*') {
                count++;
            }
        }
    }
    cout << count << endl;
    return 0;
}

运行结果:

1.直接回车两次:

会报错,并且返回值为应该输出结果

2.利用Ctrl和Z输入两次

结果正确了,但是输入与题干要求不符合

对代码进行改进:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
    int count = 0;
    string date;
    while (getline(cin, date)) {
        if (date == "")break;
        int day = stoi(date.substr(4, 2));
        if (day == 25) {
            count++;
            if (date.back() == '*') {
                count++;
            }
        }
    }
    cout << count << endl;
    return 0;
}

直接回车两次

改进之处:

添加了一行: if (date == "")break;

可以使输入条件进行限制与规范;

注意:

getline函数需要进行两次回车可以输出,多用于无法判断终止条件的时候使用;

输入数据时,月份后没有空格,只有日期与年份之间有空格,不要私自加空格,不然会无法调用函数,一直输不出正确结果,卡在这卡了好久。

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 你可以使用 Python 的 datetime 库来实现统计工作天数的系统。 具体来说,你需要做以下几件事: 1. 导入 datetime 库。 2. 使用 datetime 库中的 datetime 类创建两个日期对象,分别表示开始日期和结束日期。 3. 使用 datetime 库中的 timedelta 类计算两个日期之间的差值。 4. 使用 timedelta 对象的 days 属性获取两个日期之间相差的天数。 下面是一个示例代码: ```python from datetime import datetime, timedelta # 创建两个日期对象 start_date = datetime(2020, 1, 1) end_date = datetime(2020, 1, 5) # 计算两个日期之间的差值 difference = end_date - start_date # 获取两个日期之间相差的天数 days = difference.days print(f'两个日期之间相差{days}天') ``` 运行结果如下: ``` 两个日期之间相差4天 ``` 你还可以使用 timedelta 对象的 weeks 属性来获取两个日期之间相差的周数。 希望这些信息对你有帮助。 ### 回答2: 使用Python实现一个统计工作天数的系统可以采用以下步骤: 步骤1:导入必要的模块 首先,需要导入`datetime`和`pandas`模块来处理日期和数据。 ```python import datetime import pandas as pd ``` 步骤2:编写函数计算工作天数 接下来,可以编写一个函数来计算给定日期范围内的工作天数。 ```python def count_working_days(start_date, end_date): # 创建日期范围 date_range = pd.date_range(start_date, end_date) # 初始化计数器 working_days = 0 # 遍历日期范围 for date in date_range: # 检查日期是否为周末(周六或周日) if date.weekday() < 5: working_days += 1 return working_days ``` 步骤3:测试函数 可以通过调用这个函数并传入开始日期和结束日期来测试它。 ```python start_date = datetime.date(2022, 1, 1) end_date = datetime.date(2022, 12, 31) working_days = count_working_days(start_date, end_date) print("工作天数:", working_days) ``` 这样就可以计算出给定日期范围内的工作天数并进行输出。 ### 回答3: 要用Python实现一个统计工作天数的系统,可以采取以下步骤: 1. 首先,需要创建一个工作日的数据集,可以使用Python的datetime库来操作日期和时间。可以选择将周末(周六和周日)作为非工作日,并排除掉法定的假日。 2. 在系统中,可以设计一个函数或类来计算指定日期范围内的工作天数。该函数或类可以接收开始日期和结束日期作为参数,并返回工作日的数量。 3. 在系统中,可以实现一个界面,让用户输入开始日期和结束日期。可以使用Python的input函数获取用户的输入,并将输入的日期转换为datetime对象。 4. 然后,调用工作天数计算函数或类,传入用户输入的开始日期和结束日期作为参数。函数或类将计算工作天数并返回结果。 5. 最后,将结果输出给用户,可以使用print函数来显示工作天数。 下面是一个示例代码: ```python from datetime import datetime, timedelta class WorkdayCounter: def __init__(self): self.holidays = [] # 添加法定假日到这个列表中 def count_workdays(self, start_date, end_date): count = 0 current_day = start_date while current_day <= end_date: if current_day.weekday() < 5 and current_day not in self.holidays: count += 1 current_day += timedelta(days=1) return count def main(): counter = WorkdayCounter() start_date = input("请输入开始日期(格式:YYYY-MM-DD):") end_date = input("请输入结束日期(格式:YYYY-MM-DD):") start_date = datetime.strptime(start_date, "%Y-%m-%d") end_date = datetime.strptime(end_date, "%Y-%m-%d") workday_count = counter.count_workdays(start_date, end_date) print("在指定的日期范围内有{}个工作日。".format(workday_count)) if __name__ == "__main__": main() ``` 这样,用户可以输入开始日期和结束日期,并得到在这个日期范围内的工作日数量。需要注意的是,需根据实际情况添加法定假日,并将其添加到`WorkdayCounter`类的`holidays`列表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱姌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值