设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 8062|回复: 1
打印 上一主题 下一主题

求助!代码运行到后面,条件语句不执行,导致结果没有...

[复制链接]

2

主题

0

好友

476

积分

中级会员

Rank: 3Rank: 3

楼主
发表于 2018-4-12 22:51:01 |显示全部楼层
本帖最后由 风扇很响 于 2018-4-12 22:58 编辑

你这个为什么要这么麻烦呢,直接用itertools加上一个去重处理不就完了吗。。。"选择困难的农药召唤师"那题里面提到了啊。。。


#给定一个包含 n 个整数的数组 S,是否存在属于 S 的三个元素 a,b,c
#使得 a + b + c = 0 ?找出所有不重复的三个元素组合使三个数的和为零。
#注意:结果不能包括重复的三个数的组合。

#题意不明,是说三个数的组合不能重复,即[1,2,-3]和[2,1,-3]视为同一种组合
#还是三个数之间不能重复,即不能出现[1,1,-2]这样的组合?
#先按第一种做

import itertools

def Sum_N_S(nums, N, S):
    #N是相加的数的个数,S是这N个数之和
    t = []
    for item in itertools.combinations(nums, N):
        if sum(item) == S:
            if item not in t:
                t.append(item)
    return t

nums = [-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]
print(Sum_N_S(nums, 3, 0))


Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
============== RESTART: D:\Python36\code\crossin\数组三个元素相加为0.py ==============
[(-4, -2, 6), (-4, 0, 4), (-4, 1, 3), (-4, 2, 2), (-2, -2, 4), (-2, 0, 2)]
>>>
回复

使用道具 举报

2

主题

0

好友

476

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2018-4-12 23:17:19 |显示全部楼层
wanghui 发表于 2018-4-12 22:59
哦哦,我刚开始接触,对python函数和工具还不熟。领教了,多谢!但还是想问一下您知道我的代码问题出在哪 ...

不敢当,我也刚学python没多久。你现在是结果有遗留,我感觉是三个for循环的边界条件没写好导致的,一会加1一会减1的很容易漏结果啊...具体的还是要你自己多加print多调试了......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-5 05:51 , Processed in 0.027063 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部