Java中使用的相同逻辑不会';我不能用Python工作

Java中使用的相同逻辑不会';我不能用Python工作,python,Python,我一直在练习做网站上的练习。我的问题涉及练习19,其中提出了以下问题: 实际上,我在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:

我一直在练习做网站上的练习。我的问题涉及练习19,其中提出了以下问题:

实际上,我在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")

试着这样做:

for i in range(7):
    if i in [0,6]:
        print('*' * 5)
    elif i == 3:
        print('*' * 4)
    else:
        print('*')
  • 使用
    range(7)
  • 如果
    if
    语句中出现错误,请将它们与
    if
    elif
    else
    配对。代码中的
    else
    语句仅与第二个
    if
    语句配对
  • 打印
    打印“*”,
    仍然会省略空格,您可以通过执行
    '*'*5
  • 如果i==0或i==6,则将
    重写为
    ,如果i在[0,6]
    中,则更易于阅读和扩展
    • 该网站上的#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)
      

      Euhm
      print
      自动输入新行。
      range(1,5):
      循环4次,而不是5次。@WillemVanOnsem如果你添加一个
      最后它不会打印新行
      print“*”*5
      会比循环好。@Jean-Françoisfare正是我的思维过程。请看下面我的答案。