我已经在this网站上练习了一些练习。我的问题涉及第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")
答案 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
语句中出错,您将其与if
,elif
,else
配对。代码中的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)