Administrator 2025-01-30 小工具 476
python实现排课的代码及wps在线使用py
这是excel要实现的效果
python实现代码如下:
def parse_range(s):
parts = s.split(',')
numbers = []
for part in parts:
if '-' in part:
start, end = map(int, part.split('-'))
numbers.extend(range(start, end + 1))
else:
numbers.append(int(part))
return numbers
def format_result(result_list):
if not result_list:
return ""
formatted = []
start = end = result_list[0]
for num in result_list[1:]:
if num == end + 1:
end = num
else:
if start == end:
formatted.append(str(start))
else:
formatted.append(f"{start}-{end}")
start = end = num
if start == end:
formatted.append(str(start))
else:
formatted.append(f"{start}-{end}")
return ','.join(formatted)
input1 = input("请输入学期上课周次(如1-18):")
input2 = input("请输入不可排课周次(如7,10):")
input3 = input("请输入已排入周次(如8,12-14):")
input4 = int(input("请输入剩余总线下学时:"))
input5 = int(input("请输入剩余总学时连上节数:"))
set1 = set(parse_range(input1))
set2 = set(parse_range(input2))
set3 = set(parse_range(input3))
# 计算差集
result_set = set1 - set2 - set3
sorted_result = sorted(result_set)
formatted_result = format_result(sorted_result)
# 计算输出结果个数
count = len(sorted_result)
# 执行新的计算
new_result = input4 - count * input5
print(f"剩余总学时可上周次: {formatted_result}")
print(f"剩余未排学时: {new_result}")
在wps的excel的py编辑器里,
代码如下
df = xl("$B$1:$H$50", headers=True, sheet_name="Sheet1")
def parse_range(s):
if isinstance(s, int):
return [s]
if s == '0' or s == 0:
return []
parts = str(s).split(',')
numbers = []
for part in parts:
if '-' in part:
start, end = map(int, part.split('-'))
numbers.extend(range(start, end + 1))
else:
numbers.append(int(part))
return numbers
def format_result(result_list):
if not result_list:
return ""
formatted = []
start = end = result_list[0]
for num in result_list[1:]:
if num == end + 1:
end = num
else:
if start == end:
formatted.append(str(start))
else:
formatted.append(f"{start}-{end}")
start = end = num
if start == end:
formatted.append(str(start))
else:
formatted.append(f"{start}-{end}")
return ','.join(formatted)
for i in range(30):
input1 = df.iloc[i,0]
input2 = df.iloc[i,1]
input3 = df.iloc[i,2]
input4 = int(df.iloc[i,3])
input5 = int(df.iloc[i,4])
set1 = set(parse_range(input1))
set2 = set(parse_range(input2))
set3 = set(parse_range(input3))
# # # # 计算差集
result_set = set1 - set2 - set3
sorted_result = sorted(result_set)
formatted_result = format_result(sorted_result)
# # # # 计算输出结果个数
count = len(sorted_result)
# # # # 执行新的计算
if (input5 != 8) :
new_result = input4 - count * input5
print(formatted_result)
print(new_result)
# # # # 假设使用write_xl函数将结果写入对应单元格
# # # # 这里为模拟,实际使用时需要替换为真实的write_xl函数调用
# # # # 写入g的结果
# # # # write_xl(formatted_result, range="g"+str(i))
# # # # write_xl(new_result, range="h"+str(i))
write_xl(formatted_result, range="g"+str(i+2))
write_xl(new_result, range="h"+str(i+2))
else:
write_xl("1-5", range="g"+str(i+2))
write_xl(0, range="h"+str(i+2))
下一篇:没有了