|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:下列程序是为了将保证listed列表里没有负数出现,但是这样是建立在lasted 比较短,6位的基础上,就有点类似没有计算器的时候拿算盘打 100000000 - 1 ,需要不断的向前借位,但是由于是十进制所以前一位-1 ,对应的负数位 + 10 得9就可以了,但是 这样的话 十位也就变成了 新的-1 个位变成了 9 ,这样不断的像前递归,只要个十百千万。。。某一位出现负数,都需要像前一位 - 1 ,这一位的数+ 10,所以基于这个我就写出来了下面这个程序。但是运行过程中,我发现需要加一个这个flag 作为停止器,否则去掉了的话,程序会进入死循环(也有可能是我对break 的理解不是很好,不知道加在哪比较合适)
问题:
1. 下列这个程序可以不可以去掉flag,用别的方法代替
2. 可以不可以用递归的思想解决
3. 这个unit列表是不是也可以省略掉 换别的更好的方法
程序
lasted = [1,0,0,0,0,-1] #年月日时分秒
unit = [12,31,60,60,60] #换算位制
flag = 1
while flag:
for i in range(len(lasted)-1,0,-1):
if lasted[i] < 0:
lasted[i -1] = lasted[i -1] - 1
lasted[i] = unit[i-1] + lasted[i]
if i == 1:
flag = 0
希望各位大咖能给点ideas |
|