用python编写一个程序 输入年和月,生成输入年月的日历表。
时间: 2024-03-07 18:47:21 浏览: 85
可以使用Python中的calendar模块来生成日历表。以下是一个简单的程序,可以根据用户输入的年份和月份生成对应的日历表。
```python
import calendar
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
# 使用calendar模块的monthrange函数获取指定月份的天数
days = calendar.monthrange(year, month)[1]
# 使用calendar模块的month函数生成指定月份的日历表
cal = calendar.month(year, month)
print("以下是%d年%d月的日历表:" % (year, month))
print(cal)
```
运行程序后,用户需要输入要查询的年份和月份,程序会根据用户输入的年份和月份生成对应月份的日历表。例如,输入年份为2021,月份为5,程序会输出以下结果:
```
请输入年份:2021
请输入月份:5
以下是2021年5月的日历表:
May 2021
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
```
相关问题
用python开发一个程序,用GUI生成操作界面,操作界面大小800*800,在操作界面顶部有50*200的输入框显示当前时间,格式为年月日时分秒,在操作界面的从上往下60高处有50*400的输入框,该输入框为扫码窗口,扫码数据显示在该输入框内,扫码数据自动保存在excel表格中,除了扫码外也可以通过手动键盘输入数据,并手动保存,在扫码输入框下面实时显示数据内容和生成时间,最多可显示十行数据。在数据内容显示窗口下左边有200*300的日历窗口,可通过日历表选择日期,在日历窗口右边有一50*200的查询按钮,点击查询按钮后可以在日历下方300*800的显示窗口内显示查询结果,查询结果为该日期扫码或手动输入存储的数据,数据以先后顺序列表的形式在下方对话框显示。
好的,这是一个比较复杂的程序,需要用到Python的GUI库和Excel库。我建议使用Python的Tkinter库来生成GUI界面,使用openpyxl库来读写Excel表格。
首先,我们需要安装这两个库。在命令行中输入以下命令:
```
pip install tkinter
pip install openpyxl
```
接下来,我们需要编写代码来实现程序的功能。以下是大致的代码框架:
```
import tkinter as tk
from tkinter import ttk
import time
import datetime
import openpyxl
# 创建主窗口
root = tk.Tk()
root.title("扫码程序")
root.geometry("800x800")
# 创建顶部输入框,显示当前时间
time_label = tk.Label(root, text="", width=20, font=("Arial", 20))
time_label.place(x=300, y=10)
# 创建扫码窗口
scan_entry = tk.Entry(root, width=50, font=("Arial", 20))
scan_entry.place(x=200, y=60)
scan_listbox = tk.Listbox(root, width=50, height=10, font=("Arial", 15))
scan_listbox.place(x=200, y=140)
# 创建日历窗口
calendar = ttk.Treeview(root)
calendar.place(x=10, y=140, width=200, height=300)
query_button = tk.Button(root, text="查询", width=10, font=("Arial", 15))
query_button.place(x=10, y=450)
result_listbox = tk.Listbox(root, width=50, height=10, font=("Arial", 15))
result_listbox.place(x=200, y=460)
# 定义函数,更新当前时间
def update_time():
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
time_label.config(text=current_time)
root.after(1000, update_time)
# 定义函数,保存扫码数据到Excel表格
def save_scan_data(data):
wb = openpyxl.load_workbook("scan_data.xlsx")
ws = wb.active
row = ws.max_row + 1
ws.cell(row=row, column=1, value=data)
ws.cell(row=row, column=2, value=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
wb.save("scan_data.xlsx")
# 定义函数,从Excel表格读取扫码数据
def load_scan_data():
wb = openpyxl.load_workbook("scan_data.xlsx")
ws = wb.active
data = []
for row in ws.iter_rows(min_row=2, max_col=2, values_only=True):
data.append(row)
return data
# 定义函数,查询指定日期的扫码数据
def query_data():
selected_date = calendar.selection()[0]
selected_date_str = selected_date.split()[0]
data = load_scan_data()
result_listbox.delete(0, tk.END)
for row in data:
if row[1].startswith(selected_date_str):
result_listbox.insert(tk.END, row[0] + " " + row[1])
# 绑定查询按钮的事件
query_button.config(command=query_data)
# 启动程序
update_time()
root.mainloop()
```
需要注意的是,以上代码只是一个框架,仅实现了基本的界面和功能,还需要补充错误处理、数据校验、数据存储路径等细节。
阅读全文