怎么申请网站详细步骤亚马逊的网站建设
2026/5/21 12:39:02 网站建设 项目流程
怎么申请网站详细步骤,亚马逊的网站建设,厦门logo设计公司,免费游戏推广平台就是增加了批处理在第2个程序的基础上#xff0c;增加功能函数#xff0c;读入换行分隔的文本文件#xff0c;输出行号、原文本、迭代后文本、原已知数、现已知数的csv文件#xff0c;只给出新增的代码#xff0c;以及调用的命令行#xff0c;例如 sudofill.py input.txt…就是增加了批处理在第2个程序的基础上增加功能函数读入换行分隔的文本文件输出行号、原文本、迭代后文本、原已知数、现已知数的csv文件只给出新增的代码以及调用的命令行例如 sudofill.py input.txt ouput.csv新增代码如下importcsvimportsysdefprocess_sudoku_line(board_str,line_num):处理单个数独字符串返回结果信息iflen(board_str)!81:return{line_num:line_num,original:board_str,final:ERROR: 长度不是81字符,initial_known:0,final_known:0,filled_count:0}ifnotset(board_str).issubset(set(0123456789)):return{line_num:line_num,original:board_str,final:ERROR: 包含非数字字符,initial_known:0,final_known:0,filled_count:0}# 计算初始已知数initial_known81-board_str.count(0)# 迭代求解final_board,all_iterationssolve_iteratively_silent(board_str)# 计算最终已知数final_known81-final_board.count(0)return{line_num:line_num,original:board_str,final:final_board,initial_known:initial_known,final_known:final_known,filled_count:final_known-initial_known}defsolve_iteratively_silent(initial_board):静默版本的迭代求解不打印过程只返回结果current_boardinitial_boardwhileTrue:# 计算候选数candidatesfind_candidates(current_board)# 检查是否有唯一候选数可以填充has_single_candidatesFalseforrinrange(9):forcinrange(9):posr*9cifcurrent_board[pos]0andlen(candidates[r][c])1:has_single_candidatesTruebreakifhas_single_candidates:breakifnothas_single_candidates:break# 填充唯一候选数board_listlist(current_board)changedFalseforrinrange(9):forcinrange(9):posr*9cifboard_list[pos]0andlen(candidates[r][c])1:numnext(iter(candidates[r][c]))board_list[pos]str(num)changedTrueifnotchanged:breaknew_board.join(board_list)# 检查是否已经解决ifnew_board.count(0)0:current_boardnew_boardbreak# 更新当前数独current_boardnew_board# 安全检查最多迭代100次# 这个值可以调整但对于正常数独100次足够了returncurrent_board,[]# 返回空迭代历史defbatch_process_file(input_file,output_file):批量处理文件中的所有数独print(f处理文件:{input_file})print(f输出到:{output_file})results[]try:withopen(input_file,r,encodingutf-8)asf:linesf.readlines()total_lineslen(lines)print(f读取到{total_lines}行)fori,lineinenumerate(lines,1):# 清理行去除空白字符board_strline.strip()ifnotboard_str:# 跳过空行continueprint(f处理第{i}行:{board_str[:20]}...)# 处理数独resultprocess_sudoku_line(board_str,i)results.append(result)# 显示进度print(f 初始已知数:{result[initial_known]}, 最终已知数:{result[final_known]}, 填充数:{result[filled_count]})exceptFileNotFoundError:print(f错误: 找不到文件{input_file})returnexceptExceptionase:print(f读取文件时出错:{e})return# 写入CSV文件try:withopen(output_file,w,newline,encodingutf-8)ascsvfile:fieldnames[line_num,original,final,initial_known,final_known,filled_count]writercsv.DictWriter(csvfile,fieldnamesfieldnames)writer.writeheader()forresultinresults:writer.writerow(result)print(f\n成功处理{len(results)}个数独)print(f结果已保存到{output_file})# 显示统计信息ifresults:total_filledsum(r[filled_count]forrinresults)avg_filledtotal_filled/len(results)iflen(results)0else0print(f\n统计信息:)print(f 总填充数:{total_filled})print(f 平均每个数独填充数:{avg_filled:.2f})# 按填充数分组统计fill_groups{0:0,1:0,2:0,3:0,4:0,5:0,6:0}forrinresults:filledr[filled_count]iffilled0:filled0# 错误情况的处理iffilled5:fill_groups[filled]1else:fill_groups[6]1print(f\n填充数分布:)forkeyinsorted(fill_groups.keys()):countfill_groups[key]ifcount0:print(f 填充{key}个数字:{count}个数独)exceptExceptionase:print(f写入CSV文件时出错:{e})defbatch_main():批量处理模式的主函数print(数独批量处理工具)print(*50)iflen(sys.argv)!3:print(用法: python sudofill.py input.txt output.csv)print(\n参数说明:)print( input.txt - 包含数独字符串的文本文件每行一个81字符的数独)print( output.csv - 输出CSV文件路径)print(\n示例: python sudofill.py puzzles.txt results.csv)sys.exit(1)input_filesys.argv[1]output_filesys.argv[2]batch_process_file(input_file,output_file)# 在main()函数中添加批量处理选项defenhanced_main():增强版主函数支持命令行参数和交互模式iflen(sys.argv)3:# 命令行参数模式batch_main()else:# 交互模式原main函数的内容print(数独唯一候选数迭代求解器)print(*50)# ... 原main函数的其余代码保持不变 ...# 这里需要将原main函数的内容复制过来# 由于原main函数较长这里只显示关键修改print(\n提示要批量处理文件请使用命令行:)print( python sudofill.py input.txt output.csv)# 调用原main函数逻辑这里需要整合# 由于代码较长建议将原main函数改名为interactive_main()# 然后在这里调用interactive_main()definteractive_main():交互模式主函数原main函数重命名main()# 修改if __name__ __main__: 部分if__name____main__:# 检查命令行参数iflen(sys.argv)3:# 批量处理模式batch_main()eliflen(sys.argv)1:# 交互模式interactive_main()else:print(用法:)print( 交互模式: python sudofill.py)print( 批量处理: python sudofill.py input.txt output.csv)sys.exit(1)使用说明将新增代码添加到原程序的末尾确保原程序中的函数如find_candidates、solve_iteratively、print_summary等仍然可用运行批量处理时程序会显示处理进度和统计信息CSV文件可以用Excel或其他电子表格软件打开查看输出如下C:\d\1230python candnum3.py input10sudo.txt output10sudo.txt 数独批量处理工具 处理文件: input10sudo.txt 输出到: output10sudo.txt 读取到 10 行 处理第 1 行: 10200506768479015075... 初始已知数: 50, 最终已知数: 81, 填充数: 31 处理第 2 行: 06540809209000178028... 初始已知数: 43, 最终已知数: 81, 填充数: 38 ... 初始已知数: 44, 最终已知数: 81, 填充数: 37 处理第 10 行: 00013527007894035015... 初始已知数: 42, 最终已知数: 81, 填充数: 39 成功处理 10 个数独 结果已保存到 output10sudo.txt 统计信息: 总填充数: 348 平均每个数独填充数: 34.80 填充数分布: 写入CSV文件时出错: not supported between instances of str and int

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询