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
我正在使用idle(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,111111111111,但这里的问题是它出现了,1,11,111,1111,11111,111111111111,我不知道我想要一个逗号开始或结束。我需要他们脱掉。
然后是FuncG 我试图通过使用毕达哥拉斯数字使其工作,但只使用一个“如果”命令 并且当出来时也不希望在列中出现两次相同的数字 当我尝试它时出现了:
3 4 5
4 3 5
5 12 13
6 8 10
7 13 17
8 6 10
。 。
。 。
等等
答案 0 :(得分: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
在这个答案中,我向你展示了python字符串的join
方法(查看" python string join"在谷歌上获取更多帮助)。这就是你在FuncE和FuncF中尝试做的事情。
我还将您的函数重命名为描述该函数的名称(称为自我文档)。
我还在毕达哥拉斯函数中添加了一个集合来存储以前看到的数字组。我还向您展示了itertools.combinations
函数,这是一种更简单的方法来执行您正在进行的三重循环。使用这种方法,您可能不需要我添加的and group not in all_groups
,但我这样做是为了告诉您如何确保您还没有看过这组数字。
最后,我没有在函数中打印,而是返回了函数创建的值。
答案 1 :(得分:-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
部分更清楚一点,我不理解你的问题。