跳一跳python程序一个程序求解答

博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
使用Python编写程序求解数独游戏答案
摘要:问题描述:数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。解题建议:遇到问题后,最好先手工推导和模拟一下,把思路理清楚,然后再动手写代码。参考代码:importrandomdefinit():&&&#初始状态,每个格内都是1-9之间的数字&&&grids={(
问题描述:数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。
解题建议:遇到问题后,最好先手工推导和模拟一下,把思路理清楚,然后再动手写代码。
importrandom
definit():&&& # 初始状态,每个格内都是1-9之间的数字&&& grids = {(r, c):list(range(1,10))/&&&&&&&&&&&& forr inrange(9)for c inrange(9)}&&& # 根据文件中的位置和数字设置数独游戏初始状态&&& withopen('values.txt')as fp:&&&&&&& forline infp:&&&&&&&&&&& line = line.strip()&&&&&&&&&&& ifline == '0':&&&&&&&&&&&&&&& break&&&&&&&&&&& row, col, value = map(int, line.split(','))&&&&&&&&&&& grids[(row,col)] = value&&& returngrids
defeachGrid(grids, row, col, value):&&& tempValue = grids[(row,col)]&&& # 删除不可能的数字&&& ifisinstance(tempValue,list):&&&&&&& ifvalue intempValue:&&&&&&&&&&& tempValue.remove(value)&&&&&&& # 如果格内只有一个数字,就拿出来填充&&&&&&& iflen(tempValue) == 1:&&&&&&&&&&& grids[(row,col)] = tempValue[0]
defsolve(oldGrids):&&& grids = oldGrids.copy()&&& for r inrange(9):&&&&&&& forc inrange(9):&&&&&&&&&&& value = grids[(r,c)]&&&&&&&&&&& ifisinstance(value,int):&&&&&&&&&&&&&&& # 处理同一列&&&&&&&&&&&&&&& forrr inrange(9):&&&&&&&&&&&&&&&&&&& eachGrid(grids, rr, c, value)&&&&&&&&&&&&&&& # 处理同一行&&&&&&&&&&&&&&& forcc inrange(9):&&&&&&&&&&&&&&&&&&& eachGrid(grids, r, cc, value)&&&&&&&&&&&&&&& # 处理小九宫格内的数字&&&&&&&&&&&&&&& rowStart = r//3 * 3&&&&&&&&&&&&&&& colStart = c//3 * 3&&&&&&&&&&&&&&& forrr inrange(rowStart, rowStart+3):&&&&&&&&&&&&&&&&&&& forcc inrange(colStart, colStart+3):&&&&&&&&&&&&&&&&&&&&&&& eachGrid(grids, rr, cc, value)&&&&&&&&&&& elifisinstance(value,list)and len(value)==1:&&&&&&&&&&&&&&& # 当前格内只有一个数了,拿出来填充&&&&&&&&&&&&&&& grids[(r,c)] = value[0]&&& returngrids
defoutput(grids):&&& '''输出grids中的内容'''&&& forrow inrange(9):&&&&&&& forcol inrange(9):&&&&&&&&&&& value = grids[(row,col)]&&&&&&&&&&& ifisinstance(value,int):&&&&&&&&&&&&&&& print(grids[(row,col)], end=' ')&&&&&&&&&&& else:&&&&&&&&&&&&&&& print(' ', end=' ')&&&&&&& print()
defcheck(grids):&&& '''检查grids是否满足数独游戏要求'''&&& forrc inrange(9):&&&&&&& row = {grids[(rc,c)] for cinrange(9)}&&&&&&& iflen(row) != 9:&&&&&&&&&&& return False&&&&&&& col = {grids[(r,rc)] for rinrange(9)}&&&&&&& iflen(col) != 9:&&&&&&&&&&& return False&&& forrow inrange(0,9,3):&&&&&&& forcol inrange(0,9,3):&&&&&&&&&&& value = {grids[(r,c)]/&&&&&&&&&&&&&&&&&&&& forr inrange(row,row+3)/&&&&&&&&&&&&&&&&&&&& forc inrange(col,col+3)}&&&&&&&&&&& iflen(value) != 9:&&&&&&&&&&&&&&& return False&&& return True
defmain(oldGrids):&&& grids = oldGrids.copy()&&& steps = 0&&& while True:&&&&&&& steps += 1&&&&&&& grids = solve(grids)&&&&&&& ifsteps & 20:&&&&&&&&&&& try:&&&&&&&&&&&&&&& position = [(r,c)/&&&&&&&&&&&&&&&&&&&&&&&&&&& forr inrange(9)for c inrange(9)/&&&&&&&&&&&&&&&&&&&&&&&&&&& ifisinstance(grids[(r,c)],list)][0]&&&&&&&&&&&&&&& grids[position] = random.choice(grids[position])&&&&&&&&&&& except:&&&&&&&&&&&&&&& grids = oldGrids.copy()&&&&&&&&&&&&&&& steps = 0&&&&&&&&&&&&&&& continue&&&&&&& &&&&&&& ifall({isinstance(grids[(r,c)],int)/&&&&&&&&&&&&&&& forr inrange(9)for c inrange(9)}):&&&&&&&&&&& ifcheck(grids):&&&&&&&&&&&&&&& returngrids&&&&&&&&&&& else:&&&&&&&&&&&&&&& # 当前选择无效,恢复原状,选择下一个&&&&&&&&&&&&&&& grids = oldGrids.copy()&&&&&&&&&&&&&&& steps = 0&&&&&&&&&&&&&&& grids = init()output(grids)result = main(grids)print('='*30)output(result)print(check(result))
代码中使用的文本文件values.txt中内容格式,以第一行为例,0,2,9表示第0行第2列的初始数字为9:
运行结果一:
运行结果二:
运行结果三:
运行结果四:
------------我是分割线-------------
新书《Python程序设计开发宝典》封面与目录,已在天猫(清华大学出版社官方旗舰店)、亚马逊、当当、京东、互动出版网等各大网店全面上架。
第1章& 管中窥豹:Python概述&141.1& Python是这样一种语言&141.2& Python版本之争&141.3& Python编程规范与代码优化建议&151.4& Python虚拟开发环境的搭建&171.5& Eclipse+PyDev环境搭建和使用&171.6& 安装扩展库的几种方法&191.7& 标准库与扩展库中对象的导入与使用&201.7.1& import 模块名 [as 别名]&201.7.2& from 模块名 import 对象名[ as 别名]&211.7.3& from 模块名 import *&211.7.4& 模块导入时的搜索路径&221.8& 编写与发布自己的包&231.9& Python程序伪编译与打包&251.10& 从命令行参数和配置文件获取信息&27第2章& 万丈高楼平地起:运算符、表达式与内置对象&292.1& Python常用内置对象&292.1.1& 常量与变量&302.1.2& 数字&312.1.3& 字符串&342.1.4& 列表、元组、字典、集合&352.2& Python运算符与表达式&372.2.1& 算术运算符&382.2.2& 关系运算符&392.2.3& 成员测试运算符in与同一性测试运算符is&402.2.4& 位运算符与集合运算符&412.2.5& 逻辑运算符&412.2.6& 矩阵乘法运算符@&422.2.7& 补充说明&422.3& Python关键字简要说明&432.4& Python常用内置函数用法精要&442.4.1& 类型转换与类型判断&472.4.2& 最值与求和&512.4.3& 基本输入输出&522.4.4& 排序与逆序&552.4.5& 枚举与迭代&562.4.6& map()、reduce()、filter()&572.4.7& range()&612.4.8& zip()&612.4.9& eval()、exec()&62第3章& 玄之又玄,众妙之门:详解Python序列结构&643.1& 列表:打了激素的数组&643.1.1& 列表创建与删除&653.1.2& 列表元素访问&663.1.3& 列表常用方法&673.1.4& 列表对象支持的运算符&723.1.5& 内置函数对列表的操作&743.1.6& 使用列表模拟向量运算&753.1.7& 列表推导式语法与应用案例&763.1.8& 切片操作的强大功能&833.2& 元组:轻量级列表&863.2.1& 元组创建与元素访问&863.2.2& 元组与列表的异同点&873.2.3& 生成器推导式&883.3& 字典:反映对应关系的映射类型&903.3.1& 字典创建与删除&903.3.2& 字典元素的访问&913.3.3& 元素添加、修改与删除&923.3.4& 标准库collections中与字典有关的类&933.4& 集合:元素之间不允许重复&943.4.1& 集合对象的创建与删除&953.4.2& 集合操作与运算&953.4.3& 不可变集合frozenset&973.4.4& 集合应用案例&973.5& 序列解包的多种形式和用法&1003.6& 标准库中的其他常用数据类型&1023.6.1& 枚举类型&1023.6.2& 数组类型&1033.6.3& 队列&1033.6.4& 具名元组&1053.6.5& 堆&106第4章 反者,道之动:程序控制结构&1084.1& 条件表达式&1084.2& 选择结构&1104.2.1& 单分支选择结构&1104.2.2& 双分支选择结构&1114.2.3& 多分支选择结构&1124.2.4& 选择结构的嵌套&1134.2.5& 构建跳转表实现多分支选择结构&1144.3& 循环结构&1144.3.1& for循环与while循环&1154.3.2& break与continue语句&1164.3.3& 循环代码优化技巧&1174.4& 精彩案例赏析&118第5章& 代码复用技术(一):函数&1265.1& 函数定义与使用&1265.1.1& 基本语法&1265.1.2& 函数嵌套定义、可调用对象与修饰器&1285.1.3& 函数对象成员的动态性&1325.1.4& 函数递归调用&1325.2& 函数参数&1345.2.1& 位置参数&1355.2.2& 默认值参数&1355.2.3& 关键参数&1375.2.4& 可变长度参数&1375.2.5& 强制函数的某些参数必须以关键参数形式进行传值&1385.2.6& 强制函数的所有参数必须以位置参数&1395.2.7& 传递参数时的序列解包&1405.2.8& 标注函数参数与返回值类型&1425.3& 变量作用域&1425.3.1& 全局变量与局部变量&1425.3.2& nonlocal变量&1455.4& lambda表达式&1465.5& 生成器函数设计要点&1485.6& 偏函数与函数柯里化&1505.7& 单分发器与泛型函数&1525.8& 协程函数&1535.9& 注册程序退出时必须执行的函数&1555.10& 回调函数原理与实现&1565.11& 精彩案例赏析&156第6章& 代码复用技术(二):面向对象程序设计&1846.1& 类的定义与使用&1846.1.1& 基本语法&1846.1.2& type类&1856.1.3& 定义带修饰器的类&1866.2& 数据成员与成员方法&1876.2.1& 私有成员与公有成员&1876.2.2& 数据成员&1896.2.3& 成员方法、类方法、静态方法、抽象方法&1906.2.4& 属性&1926.2.5& 类与对象的动态性、混入机制&1946.3& 继承、多态、依赖注入&1966.3.1& 继承&1966.3.2& 多态&1986.3.3& 依赖注入技术的不同实现方法&1996.4& 特殊方法与运算符重载&2026.5& 精彩案例赏析&2046.5.1& 自定义队列&2046.5.2& 自定义栈&2086.5.3& 自定义集合&2106.5.4& 自定义数组&2166.5.5& 自定义双链表&2216.5.6& 自定义常量类&2236.5.7& 自定义不允许修改值的字典&2246.5.8& 自定义支持with关键字的类&225第7章& 文本处理(一):字符串&2267.1& 字符串编码格式简介&2277.2& 转义字符与原始字符串&2287.3& 字符串格式化&2297.3.1& 使用%符号进行格式&2297.3.2& 使用format()方法进行字符串格式化&2317.3.3& 格式化的字符串常量&2327.3.4& 使用Template模板进行格式化&2327.4& 字符串常用操作&2337.4.1& find()、rfind()、index()、rindex()、count()&2337.4.2& split()、rsplit()、partition()、rpartition()&2357.4.3& join()&2367.4.4& lower()、upper()、capitalize()、title()、swapcase()&2377.4.5& replace()、maketrans()、translate()&2387.4.6& strip()、rstrip()、lstrip()&2397.4.7& startswith()、endswith()&2397.4.8& isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、isupper()、islower()&2407.4.9& center()、ljust()、rjust()、zfill()&2417.4.10& 字符串对象支持的运算符&2417.4.11& 适用于字符串对象的内置函数&2437.4.12& 字符串对象的切片操作&2457.5& 其他有关模块&2457.5.1& textwrap模块&2457.5.2& zlib模块提供的压缩功能&2487.6& 字符串常量&2497.7& 可变字符串&2507.8& 中英文分词&2517.9& 汉字到拼音的转换&2527.10& 精彩案例赏析&253第8章& 文本处理(二):正则表达式&2568.1& 正则表达式语法&2568.1.1& 正则表达式基本语法&2568.1.2& 正则表达式扩展语法&2578.1.3& 正则表达式锦集&2578.2& 直接使用正则表达式模块re处理字符串&2598.3& 使用正则表达式对象处理字符串&2628.4& match对象&2648.5& 精彩案例赏析&267第9章& 数据永久化:文件内容操作&2739.1& 文件操作基本知识&2749.1.1& 内置函数open()&2749.1.2& 文件对象属性与常用方法&2769.1.3& 上下文管理语句with&2779.2& 文本文件内容操作案例精选&2779.3& 二进制文件操作案例精选&2829.3.1& 使用pickle模块读写二进制文件&2829.3.2& 使用struct模块读写二进制文件&2849.3.3& 使用shelve模块操作二进制文件&2859.3.4& 使用marshal模块操作二进制文件&2859.3.5& 其他常见类型二进制文件操作案例&286第10章& 文件与文件夹操作&29710.1& os模块&29710.2& os.path模块&30010.3& shutil模块&30110.4& 其他常用模块&30310.4.1& glob模块&30310.4.2& fnmatch模块&30310.5& 精彩案例赏析&304第11章& 代码质量保障:异常处理结构、程序调试与测试&30911.1& 异常处理结构&30911.1.2& Python内置异常类层次结构&31011.1.3& 异常处理结构&31111.1.4& 断言与上下文管理语句&31711.2& 文档测试doctest&31811.3& 单元测试unittest&32011.4& 覆盖测试&32311.5& 软件性能测试&32411.6& 代码调试&32611.6.1& 使用IDLE调试&32611.6.2& 使用Eclipse+PyDev进行代码调试&32911.6.3& 使用pdb调试&329第12章& 多任务与并行处理:线程、进程、协程、分布式、GPU加速&33412.1& 多线程编程&33412.1.1& 线程概念与标准库threading&33512.1.2& 线程对象&33612.1.3& 线程调度&33912.1.4& Lock/RLock对象&34112.1.5& Condition对象&34312.1.6& Queue对象&34512.1.7& Event对象&34812.1.8& Semaphore与BoundedSemaphore&34912.1.9& Barrier对象&35012.2& 多进程编程&35112.2.1& 进程创建与管理&35212.2.2& 进程同步技术&35212.2.3& Pool对象&35312.2.4& Manager对象&35812.2.5& Listener与Client对象&36112.2.6& 进程间数据交换与共享&36212.2.7& 标准库subprocess&36512.3& 协程&36512.4& concurrent.futures模块提供的并发执行功能&36812.5& pySpark并行计算与分布式计算框架&36912.6& GPU编程&37612.6.1& 使用pycuda实现GPU加速&37612.6.2& 使用pyopencl实现GPU加速&37812.6.3& 使用tensorflow实现GPU加速&379第13章& 互通互联:asyncio提供的网络通信功能&38113.1& Transport类与Protocol类&38113.2& StreamReader与StreamWriter&386附录:精彩在继续&390附录1:GUI开发&390附录2:SQLite数据库操作&393附录3:计算机图形学编程&394附录4:图像编程&397附录5:数据分析、机器学习、科学计算可视化&400附录6:密码学编程&400附录7:系统运维&401附录8:Windows系统编程&402附录9:软件分析与逆向工程&404参考资料&406
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
使用Python编写程序求解数独游戏答案相关信息,包括
的信息,所有使用Python编写程序求解数独游戏答案相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International苹果/安卓/wp
积分 46, 距离下一级还需 39 积分
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡下一级可获得
权限: 自定义头衔
(VIP/贵宾)八级
(VIP/贵宾)八级
已加入2年, 距下一级还需7个月
权限: 隐身, 签名中使用图片, 自定义头衔, 设置回复可见, 设置帖子权限
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板, 匿名卡, 显身卡, 抢沙发, 沉默卡, 变色卡, 提升卡, 千斤顶下一级可获得
权限: 签名中使用代码道具: 置顶卡
小弟刚学python不就,先遇到一个问题困扰了很久求各位大神解答
小弟现在学习machine learning in action 里面的KNN算法,在第二部,输入数据并统计数据的标号和数据时需要输入文件,我安装宿舍的代码一直有问题。求各位大神解答
#!usr/bin/python
from numpy import *
def file2matrix(filename):
& & & & fr = open(filename)
& & & & numberOfLines = len(fr.readlines())
& & & & returnMat = zeros((numberOfLines,3))
& & & & classLabelVector = []
& & & & fr = open(filename)
& & & & index = 0
& & & & for line in fr.readlines():
& & & & & & & & line = line.strip()
& & & & & & & & listFromLine = line.split('\t')
& & & & & & & & returnMat[index,:] = listFromLine[0:3]
& & & & & & & & classLabelVector.append(int(listFromLine[-1]))
& & & & & & & & index += 1
& & & & return returnMat,classLabelVector
datingDataMat,datingLabels =file2matrix('E:\python data\py2\datingTestSet.txt')
运行后 一直出现
请求给位大神解答,小弟感激不尽
这一行classLabelVector.append(int(listFromLine[-1]))
修改为classLabelVector.append(listFromLine[-1])
(151.96 KB)
09:09:43 上传
没有从逻辑上来判断对错,只是从语法上排除了错误。
如果不对,请提出,帮你再修改。
python爱好者 发表于
这一行classLabelVector.append(int(listFromLine[-1]))
修改为classLabelVector.append(listFromLine[-1] ...问题解决了,非常感谢,您真是高手啊
老外书上代码 是错误的!
python爱好者 发表于
老外书上代码 是错误的!您好,我也碰到楼主的问题,并用你的方案解决了,可是输出datingLabels[0:20]的时候,显示的不是数字,而是字符串,是因为没有int的原因吗?
&&& datingLabels[0:20]
['largeDoses', 'smallDoses', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'largeDoses', 'largeDoses', 'didntLike', 'largeDoses', 'didntLike', 'didntLike', 'smallDoses', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'smallDoses', 'largeDoses']
改变ing88 发表于
您好,我也碰到楼主的问题,并用你的方案解决了,可是输出datingLabels[0:20]的时候,显示的不是数字,而 ...加一个 print type()测试一下看是啥类型!
python爱好者 发表于
加一个 print type()测试一下看是啥类型!type(datingLabels)是列表类型。感觉应该在前面将字符串以数字表示,但也不是用int进行强制转换。
python爱好者 发表于
加一个 print type()测试一下看是啥类型!因为‘datingTestSet.txt’文件中每一行的第四个元素是largeDoses&&或 smallDoses 或didntLike。书上的datingLabels[0:20]的结果是[3,2,1,1,1,....]意味着largeDoses用3表示了,smallDoses用2表示了,didntLike用1 表示了。而我的代码输出结果就是['largeDoses', 'smallDoses', 'didntLike',' '.....]
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 72, 距离下一级还需 128 积分
论坛徽章:0
新学乍练 Python,遇到一个问题,心血来潮想自己写个程序解决,不料遇到程序中要写一个用于计算阶乘的函数,却怎么也写不出。
逛《啄木鸟》时,无意中看到有人实现了一个,但是限于自身水平不济,竟然看不懂人家的代码,实在不好意思,上来看看这里论坛有没有哪位位老兄能够指点一下,不胜感激。
啄木鸟上的一个源码如下:
def P(x, y = None):
& && &&&'''
& && &&&求排列数P(x, y),y默认值为x,此时取P(x),即x!
& && &&&'''
& && &&&if x == 0 or y == 0:
& && && && && & return 1
& && &&&re = x
& && &&&i = x - 1
& && &&&if y == None:
& && && && && & z = 1
& && &&&else:
& && && && && & z = x - y
& && &&&while i & z:
& && && && && & re *= i
& && && && && & i -= 1
& && &&&return re复制代码
白手起家, 积分 41, 距离下一级还需 159 积分
论坛徽章:0
#!/usr/bin/env python& && && && && && && && && && && && && && && && && && && &&&
n=10
print reduce(lambda x,y:x*y, range(1,n+1))
复制代码
白手起家, 积分 41, 距离下一级还需 159 积分
论坛徽章:0
可读性好一些的版本:
#!/usr/bin/env python& && && && && && && && && && && && && && && && && && && &&&
from operator import mul
n=10
print reduce(mul, range(1,n+1))
复制代码
白手起家, 积分 72, 距离下一级还需 128 积分
论坛徽章:0
谢谢楼上的。
不知道还有一个 reduce 函数。
我想了很久,一直在 f(n) = n*f(n-1) 上兜圈子,一直想怎么用一个 closure 函数来实现此功能。
可能是思维定势了
白手起家, 积分 41, 距离下一级还需 159 积分
论坛徽章:0
一般的做法是上一个循环。看你的回复好像想用递归。下面是一个递归版本:
#!/usr/bin/env python& && && && && && && && && && && && && && && && && && && &&&
def factorial(n):
& & if n==0:
& && &&&return 1
& & else:
& && &&&return n*f(n-1)
print factorial(10)
复制代码
白手起家, 积分 72, 距离下一级还需 128 积分
论坛徽章:0
哈哈,我依样画葫芦,终于也做出一个来了:
def fra(n):
& && &&&if n & 1:
& && && && && & return 1
& && &&&i = 1
& && &&&total = 1
& && &&&while i &= n:
& && && && && & total *= i
& && && && && & i += 1
& && && && && & continue
& && &&&return total复制代码
白手起家, 积分 72, 距离下一级还需 128 积分
论坛徽章:0
原帖由 retuor 于
23:08 发表
一般的做法是上一个循环。看你的回复好像想用递归。下面是一个递归版本:
#!/usr/bin/env python& && && && && && && && && && && && && && && && && && && &&&
def factorial(n):
& & if n==0:
爽啊,没想到 python 居然也支持递归的。
今天收获不少,谢谢兄弟热心解答,以后还要多多请教。
家境小康, 积分 1891, 距离下一级还需 109 积分
论坛徽章:0
原帖由 lephon 于
23:17 发表
哈哈,我依样画葫芦,终于也做出一个来了:
def fra(n):
& && &&&if n & 1:
& && && && && & return 1
& && &&&i = 1
& && &&&total = 1
& && &&&while i&&
呵呵,这个不用continue。
丰衣足食, 积分 700, 距离下一级还需 300 积分
论坛徽章:0
原帖由 lephon 于
23:22 发表
爽啊,没想到 python 居然也支持递归的。
今天收获不少,谢谢兄弟热心解答,以后还要多多请教。
这个....我还真不知道哪个编程语言不支持递归的。
白手起家, 积分 41, 距离下一级还需 159 积分
论坛徽章:0
python 支持递归,但对尾递归没有优化。如果没有什么特别理由,在 python 里还是少使用递归为好。
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处(千夫影子)
(编程分享)
(编程分享)
第三方登录:}

我要回帖

更多关于 python程序员初级要求 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信