Java中使用的相同逻辑在Python中不起作用

时间:2017-01-21 21:11:54

标签: python

我已经在this网站上练习了一些练习。我的问题涉及第19项练习,其中提出以下问题:

enter image description here

我实际上在Java中运行了下面提到的相同逻辑并且它有效,但我无法理解为什么它不能在Python中工作。

import os

List = [0,1,2,3,4,5,6]

for i in List:

    if i==0 or i==6:
        for j in range(1,5):
            print "*",
        print("")
    if i==3:
        for k in range(1,4):
            print "*",
        print("")
    else:
        print "*",


print("")

os.system("pause")

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

for i in range(7):
    if i in [0,6]:
        print('*' * 5)
    elif i == 3:
        print('*' * 4)
    else:
        print('*')
  • 而不是List = [0,1,2,3,4,5,6]使用range(7)
  • 您在if语句中出错,您将其与ifelifelse配对。代码中的else语句仅与第二个if语句
  • 配对
  • 打印print "*",仍然省略了空格,您可以通过执行'*'*5
  • 来避免这种情况
  • if i==0 or i==6重写为if i in [0,6],这样更容易理解,更容易扩展

答案 1 :(得分:2)

该网站上#19的解决方案非常糟糕。 如果您要保留静态列表,请保留每行打印的静态星列表:

num_stars = [5, 1, 1, 4, 1, 1, 5]
for num in num_stars:
    print('*' * num)

另外值得注意的是,如果您希望首先将输入存储为字符串并将其打印出来,则可以使用带有列表推导的简单str.join()

e = '\n'.join(['*' * num for num in num_stars])
print(e)