-4
def FuncE():
    for x in range(1,11):
        print str(2*x-1) + ",",


def FuncF():
    n = 7
    c = "1"
    for x in range(0, 9-1):
        print str(x*c) + ', ',


def FuncG():
    for a in range(1,51):
       for b in range(a + 1,51):
           for c in range(b + 1,51):
               if (a*a + b*b == c*c):
                       print  "\t\t\t",a,b,c

我使用空闲(python GUI)然后在 python 中工作(命令行)

对于 FuncE 需要打印 1,3,5,7,9,11,13,15,17,19 但是当我尝试它时它会像 1,3,5,7,9,11,13,15,17 ,19,带一个额外的逗号

我需要 FuncF 打印出 1、11、111、1111、11111、111111、1111111 但这里的问题是它出来了 1、11、111、1111、11111、111111、1111111,我不想要逗号开头或结尾。我需要把它们取下来。

然后对于 FuncG,我试图通过使用毕达哥拉斯数字使其工作,但只使用一个“if”命令,并且当我尝试出现时,也不希望相同的数字在列中出现两次:

3 4 5

4 3 5

5 12 13

6 8 10

7 13 17

8 6 10

. . .

. . .

等等

4

2 回答 2

0
def odd_numbers(n):
    return ','.join([str(2*i-1) for i in range(1,n)])


def groups_of_ones(n):
    return ','.join([str("1"*i) for i in range(1,n)])


def pythagorean_numbers(n):
    import itertools
    all_groups = set([])
    for a, b, c in itertools.combinations(range(1,b)):
        group = tuple(sorted([a,b,c]))
        if a*a + b*b == c*c and group not in all_groups:
            all_groups.add(group)
    return all_groups

print odd_numbers(11) # prints 1,3,5,7,9,11,13,15,17,19
print groups_of_ones(8) # prints 1,11,111,1111,11111,111111,1111111
for a,b,c in pythagorean_numbers(51):
    print "\t\t\t", a, b, c

在这个答案中,我向您展示了joinpython 字符串的方法(在 google 上查找“python string join”以获得更多帮助)。这就是您在 FuncE 和 FuncF 中尝试做的事情。

我还将您的函数重命名为描述函数的名称(称为自我文档)。

我还在 pythagorean 函数中添加了一个集合来存储之前看到的数字组。我还向您展示了该itertools.combinations功能,这是一种更简单的方法来执行您正在执行的三重循环。使用这种方法,您可能不需要and group not in all_groups我添加的那个,但我这样做是为了向您展示如何确保您还没有看到那组数字。

最后,我没有在函数中打印,而是返回了函数创建的值。

于 2013-10-14T15:46:06.907 回答
-1

完成后可以打印字符串吗?

my_string = ""
   for x in range(0, 9-1):
      my_string += str(x)
      if x != 7:
         my_string += ", "
print my_string

当您在 的对象之后使用逗号字符打印某些内容时print,python 会自动插入一个空格。如果你想解决这个问题,你需要一次打印一个字符串,使用字符串插值,或者类似的东西。

你需要对你的问题部分更清楚一点FuncG,我不理解你遇到的问题。

于 2013-10-14T04:13:21.963 回答