如何从for循环中排除某些内容?

时间:2016-04-20 09:49:07

标签: python for-loop

这是我目前的代码

./build.sh compile-native

,输出看起来像这样

percentagesOff = [5,10,15.....]

for percentage in percentagesOff:
     print("Percent off: ",percentage, end= " ")

等等。

这是我希望代码看起来像什么的一个例子。 (必须使用嵌套for循环作为家庭作业的一部分)

Percent off: 5
Percent off: 10
Percent off: 15

我的问题是关注这一部分

                     $10     $100    $1000
Percent off: 5%       x       x        x 
             10%      x       x        x
             15%      x       x        x 
             20%      x       x        x

我正在努力弄清楚如何只在我的for循环中打印Percent off: 5% 10% 15% 20% 部分。

6 个答案:

答案 0 :(得分:3)

我真的不喜欢那些告诉学生在没有向他们展示正确工具的情况下完成某些事情的老师。我猜你还没有被引入string.format()方法?没有它,排列你的柱子将是一个彻头彻尾的痛苦。当你需要一把螺丝刀时,你正试图使用​​锤子。

无论如何,无论如何,我会说正确的方法是打印一串与'Percent off:'相同长度的空格,当你不想要那个字符串时。所以:

poff = 'Percent off: '
pad = ' '*len(poff)

p = poff
for percentage in percentagesOff:
     print(p ,percentage, end= " ")
     p = pad                   # for all subsequent trips around the loop

更好的风格是允许您可能希望在每页输出的顶部再次输出poff输出。因此,第二个代码块的更好方法是

for lineno, percentage in enumerate(percentagesOff):
     if lineno==0: # can replace later with are-we-at-the-top-of-a-page test?
         p = poff
     else
         p = pad
#    p = poff if lineno==0 else pad  # alternative shorter form
     print(p ,percentage, end= " ")

答案 1 :(得分:1)

你可以将它拉出for循环,然后只打印一次,或者你可以通过将一些布尔变量设置为True来“记住”你已经打印过它(在{{1}处初始化) })然后在打印字符串的那一部分之前检查该变量是False还是True

答案 2 :(得分:1)

下面

percentagesOff = [5, 10, 15, 20]

print("Percent off:\t", percentagesOff[0], '%')
for percentage in percentagesOff[1:]:
    print("\t\t", percentage, "%")

输出

Percent off:     5 %
                 10 %
                 15 %
                 20 %

答案 3 :(得分:1)

以下是另一种解决方案:

percentagesOff = [1,2,3,4,5,6,7,8,9,10]
print 'Percent off:    ', percentagesOff[0]            #use blanks instead of '\t'
for percentage in percentagesOff[1:]:
    print ' '*len('Percent off:    '), percentage      

最后一行为字符串''Percent off:''的每个字符留下一个空格,然后开始打印数组元素。

基本上,“len('something')”返回字符串'something'包含的字符数。然后我们多次''(这是一个空格)的数字。

答案 4 :(得分:0)

有趣的练习...... 你可以这样做。

first = True

for p in pe:
    if first == True:
        print("percent off: ")
        first = False
        print(p)
    else:
        ....
        ....

但你通常不会这样做。

答案 5 :(得分:-1)

事实是python print会在打印字符串后添加换行符。所以, 导入import sys,然后在循环之前使用:

sys.stdout.write('               $10     $100    $1000\n')
sys.stdout.write('Percent off:')

现在,您可以开始使用print来编写表条目。

您也可以简单地添加一个带有布尔值的if语句。