我找不到打印代码的源代码“无”

2024-09-27 21:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我写了这段代码,它是有效的,但是,我试图找到一种方法,使这段代码返回正确的输出,如下所示。这是我的密码

upto = 5
def original_num(upto:int):
    for x in range(1, upto+1):
        print (x, (7**x)%97)
def powerLoop(upto: int):
    upto = upto
    return original_num(upto)
print(powerLoop(upto))

但当我打印输出时,这就是我得到的

1 7
2 49
3 52
4 73
5 26
None

但是如果我在代码中使用print而不是return

upto = 5
def powerLoop(upto:int):
    for x in range(1, upto+1):
        print(x, (7**x)%97)
powerLoop(upto)

这就是我得到的

1 7
2 49
3 52
4 73
5 26

如何使用return,然后一旦我说print(powerloop(upto),输出将在不打印“none”的情况下发生


Tags: 方法代码in密码forreturndefrange
3条回答

如果您想写入print(powerLoop(upto))而不获取None,可以使用yield如下所示:

>>> upto = 5
>>> def powerLoop(upto:int):
...    for x in range(1, upto+1):
...        yield (x, (7**x)%97)
>>> print(*powerLoop(upto), sep='\n')
(1, 7)
(2, 49)
(3, 52)
(4, 73)
(5, 26)

>>> for ret in powerLoop(upto):
...    print(*ret)
1 7
2 49
3 52
4 73
5 26

如果您想使用return,可以使用list并返回list,如下所示:(编辑答案基本注释)

>>> upto = 5
>>> def powerLoop(upto:int):
...    out = []
...    for x in range(1, upto+1):
...        out.append([x, (7**x)%97])
...    return out

>>> print(*powerLoop(upto), sep='\n')
[1, 7]
[2, 49]
[3, 52]
[4, 73]
[5, 26]


>>> for ret in powerLoop(upto):
...    print(*ret)

1 7
2 49
3 52
4 73
5 26

您的original_num(...)函数已经打印了所需的输出,返回最终在print(powerLoop(upto))中打印的{}

只是:

powerLoop(upto)

不会打印返回值,但仍然“收获”函数调用的副作用(其他print

你为什么要再打印

upto = 5
def original_num(upto:int):
    for x in range(1, upto+1):
        print (x, (7**x)%97)
def powerLoop(upto: int):
    return original_num(upto)

powerLoop(upto)

上面最后一行,取消打印,因为函数original_num已经打印了结果

在python中,如果您的函数没有要返回的内容,那么它将不返回任何内容,然后您将不打印任何内容

def abc():
    a=100

print(abc())

上面的例子将一无所获

相关问题 更多 >

    热门问题