我不明白如何引用列表中的每个项目,而不是仅使用for循环时的最后一项。这是一个简单的程序,我想在一行上打印n - con = new SqlConnection("Data Source=(local);" +
"Initial Catalog=NorthwindDB.mdf;Integrated Security=True");
// Or Data Source=.\\sqlexpress;
,其中n是*
列表中的每个数字。这是我的代码:
stars
此代码的输出仅为#!/usr/bin/python
def histogram():
stars = [10,2,3]
for i in stars:
char = "*" * i
return char
print histogram()
(***
中的最后一个数字)。如何打印每个号码的星星?请使用最简单的语法和解释。
答案 0 :(得分:3)
实际上,您的函数只返回分配给' char'的最后一个值。 - 此值将是由星组成的单个字符串。你想做的是创建一个连续值的列表,这些值是“char”和“char”之间的关系。在循环的每次迭代中采用:
def histogram():
stars = [10,2,3]
return [ "*" * i for i in stars ]
>>> histogram()
['**********', '**', '***']
>>> print('\n'.join( histogram() ))
**********
**
***
以上将逐行打印出星星,并将列表存储为变量,'明星'。
更快/更清晰的方法是执行相同的操作是列表理解(functional programming结构),它可以动态创建列表:
{{1}}
答案 1 :(得分:2)
问题是,stars
中的每个项目都会重新分配char
。因此,在histogram()
返回时,char等于"*" * stars[-1]
(列表中的最后一项)。解决此问题的最简单方法是只为char
中的每个元素打印stars
,而不返回任何内容。
def histogram():
stars = [10,2,3]
for i in stars:
char = "*" * i
print char
histogram()
**********
**
***
如果您希望从直方图返回输出,则可以添加到char
,而不是将其分配给新值。为此,我们将char
设置为for循环之外的空字符串(''
),然后在for循环内部使用char +=
(相当于{ {1}})添加到char = char +
。 char
是在'\n'
中的每个项目之间添加换行符(没有它,所有星星都会在输出中的一行上)。
stars
更简洁的写作方式是:
def histogram():
stars = [10,2,3]
char = ''
for i in stars:
char += "*" * i + '\n'
return char
print histogram()
答案 2 :(得分:1)
考虑:
def histogram(li):
rtr=[]
for n in li:
rtr.append('*'*n)
return rtr
然后你可以做类似的事情:
stars=[10,2,3]
for t in zip(stars, histogram(stars)):
print('{:4d} {}'.format(*t))
打印:
10 **********
2 **
3 ***
答案 3 :(得分:-1)
#!/usr/bin/python
def histogram():
stars = [10,2,3]
stars_str = ""
for i in stars :
stars_str += "*" * i + '\n'
return stars_str.strip()
print histogram ()