【问题标题】:printing a python code multiple times (NO LOOPS0多次打印 python 代码(NO LOOPS0
【发布时间】:2015-10-04 16:16:42
【问题描述】:

我一直无法在 Python 3.4 中获取特定打印 输入:

str=input("Input Here!!!:")
num = len(str)
x = num
print (((str))*x)

但我正在寻找一个不使用循环打印 str x 次的输出。

例如,如果我输入:

Input Here!!!: Hello

我会得到:

>>>Hello
>>>Hello
>>>Hello
>>>Hello
>>>Hello

【问题讨论】:

  • 变量名不要使用关键字。
  • 有什么问题?看起来你已经做到了。
  • 您想在单独的行中获取 Hello,您给出的输出是预期的输出吗?请提供更多信息。
  • @AvinashRaj:我知道你的意思,但你不能使用关键字作为变量名,所以这不是真正的问题..

标签: python string printing


【解决方案1】:

如果你想在不同的行上输出,你需要添加一个换行符:

In [10]: n = 5

In [11]: s = "hello"

In [12]: print((s+"\n")* n)
hello
hello
hello
hello
hello

不可能像每个字符串都是新命令的输出一样获得输出。最接近预期输出的是上面的代码。

【讨论】:

  • 末尾多了一个换行符。尝试使用rstrip 删除它。
  • @MalikBrahimi 除非是他自己添加的,但事实并非如此。
  • @MalikBrahimi,是的 ((s+"\n")* n).rstrip() 如果这是一个问题,将删除
【解决方案2】:

你不应该使用内置关键字,变量名称的类型。 str 是一个内置类型,如 list、int 等。下次你尝试使用它时,会报错。

前-

>>> str = 'apple'

现在让我们尝试构建一个简单的 no.s 列表作为字符串。

>>> [ str(i) for i in range(4)]

Traceback (most recent call last):
  File "<pyshell#298>", line 1, in <module>
    [ str(i) for i in range(4)]

TypeError: 'str' 对象不可调用

因为我们已经用字符串替换了 str 。它不能被调用。

所以我们用's'代替'str'

s=input("Input Here!!!:")
print ( s * len(s) )

如果你想在不同的行输出

print ( (s+"\n")* len(s) )

【讨论】:

  • 这更像是试图清理他的答案并提到没有使用保留。
  • 但是str 用于将某些输入转换为字符串,例如 int 等。也许从技术上讲它们被称为其他东西。我觉得不好用。
  • 嗯,我的错,但仍然不应该使用函数名作为变量名,对吧?
  • 你们三个可以在聊天中讨论这个吗?
  • 我的错。是的你是对的。它是一种内置类型,被重载以接受调用。
【解决方案3】:

我不知道你到底想达到什么目标。我们总是可以通过 recursive function replicate looping

def input(s):
    print(s)

def pseudo_for(n, my_func, *args):
    if n==0:
        return
    else:
        '''
        Write function or expression to be repeated
        '''
        my_func(*args)
        pseudo_for(n-1, my_func, *args)

pseudo_for(5, input, "Hello")

【讨论】:

    【解决方案4】:

    您可以将join 与列表理解一起使用:

    >>> s='string'
    >>> print('\n'.join([s for i in range(5)]))
    string
    string
    string
    string
    string
    

    我想从技术上讲,列表理解是一个“循环”,但您还没有明确“不使用循环”是什么意思

    您也可以在 Python 中使用字符串格式化:

    >>> fmt='{0}\n'*5
    >>> fmt
    '{0}\n{0}\n{0}\n{0}\n{0}\n'
    >>> print(fmt.format('hello'))
    hello
    hello
    hello
    hello
    hello
    

    但是最后会有一个额外的\n(任何使用*n的东西也一样)


    正如 Tim 在 cmets 中指出的那样:

    >>> print('\n'.join([s]*5))
    string
    string
    string
    string
    string
    

    可能是最好的...

    【讨论】:

    • '\n'.join([s]*5) 怎么样?
    猜你喜欢
    • 2021-02-12
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 2021-05-28
    • 2021-04-03
    相关资源
    最近更新 更多