【问题标题】:python with for loop [duplicate]带有for循环的python [重复]
【发布时间】:2013-01-25 11:02:12
【问题描述】:

嘿,我的 for 循环有问题, 所以假设我想用 for 循环在一行中打印 5 次“#”符号。

for i in range(5):
    print "#",

我可以如何利用它们之间的空间,所以它看起来像##### 而不是#####???

【问题讨论】:

  • 哦,伙计们,问题是我尽量不使用 multiplcation(*) 运算符或任何重复连接,我必须使用 for 循环将其打印出来。
  • 感谢大家的帮助我刚刚知道怎么做!!多谢。感谢所有的建议!
  • 为什么你试图避免这些事情? 为什么你必须使用for-loop?如果您在问题中解释您的限制,您更有可能得到合适的答案。无论如何,How do I keep Python print from adding spaces? 的答案仍然有效。
  • 你是说你想要一个替代方法来做最简单的事情吗?喜欢家庭作业吗?
  • 哦,它用于实验室练习,它有限制,并且由于我们正在学习使用 for 循环,因此问题要求我们不要使用乘法运算符或任何重复连接,而是仅使用 for 循环达到结果。很抱歉没有在问题中澄清这一点。

标签: python loops for-loop space


【解决方案1】:

我假设您计划在此循环中执行其他操作,而不仅仅是打印“#”,如果是这种情况,您有几个选项:

import sys
for i in range(5):
    sys.stdout.write('#')

或者如果你决定使用打印:

for i in range(5):
    print "\b#",

或:

from __future__ import print_function
for i in range(5):
    print('#', end='')

如果您实际上只是想打印 '#' n 次,那么您可以这样做:

n = 5
print '#'*n

或:

n = 5
print ''.join('#' for _ in range(n))

【讨论】:

    【解决方案2】:

    改用print 函数。 (请注意,在 Python 2 中,print 通常是一个语句,但通过导入 print_function,它会变成一个函数。

    from __future__ import print_function
    
    for i in range(5):
        print('#', end='')
    

    该函数支持end关键字参数,您可以指定。

    【讨论】:

    • 要清楚,区别在于print 通常是一个关键字(我认为只有 Python 2.7),所以这是使用打印 函数 的一种方式。
    【解决方案3】:

    我会使用连接...这样的东西应该可以工作:

    print(''.join('x' for x in range(5)))
    

    【讨论】:

    • 或者,print '#' * 5
    • 没错...可能更干净。
    【解决方案4】:

    你可以在没有循环的情况下做到这一点!

    print '#' * 5
    

    如果你想让事情变得更复杂,你可以使用 str.join 理解:

    print ''.join(str(i**2) for i in range(4)) # prints 0149
    print ','.join(str(i+1) for i in range(5)) # prints 1,2,3,4,5
    

    【讨论】:

    • 我以为 OP 不想要逗号。但是,如果他这样做,您的加入是绝对正确的。
    • 这是一个例子。但是,我想没有逗号会更清楚。谢谢。
    • 是的;但是,对于需要更复杂的人来说,您使用列的解决方案非常有用。我喜欢它。 :)
    • 男孩......人们真的跳遍了这个问题。很多循环:)
    • 好吧,妥协。逗号没有逗号!
    【解决方案5】:

    除了发布的其他答案,您还可以:

    mystring = ''
    for i in range(5):
        mystring += '#' # Note that you could also use mystring.join() method
                        # .join() is actually more efficient.
    print mystring
    

    或者你甚至可以:

    print '#'*5
    

    【讨论】:

    • 我不认为mystring.join('#') 做你认为它做的事情。
    • mystring.join('#') 是一个无操作...并且以这种方式构建字符串效率不高。
    • 这就是为什么我会做print '#'*5。我认为该示例旨在询问“如何在不添加空格的情况下进行打印”,因为最简单的答案是print '#####'
    • @BenMordecai 我同意,我不认为 OP 真的在寻找 print '#'*5
    • 编辑了我的误导性加入
    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多