我希望我的输出为:
Enter a number : n
List from zero to your number is : [0,1,2,3, ... , n]
0 + 1 + 2 + 3 + 4 + 5 ... + n = sum(list)
然而我的实际输出是:
Enter a number : 5
List from zero to your number is : [0, 1, 2, 3, 4, 5]
[+0+,+ +1+,+ +2+,+ +3+,+ +4+,+ +5+] = 15
我正在使用join
,因为这是我所知道的唯一类型。
为什么项目周围印有加号?为什么它们围绕着空格?
如何将list
的值打印到字符串中供用户阅读?
谢谢。这是我的代码:
##Begin n_nx1 application
n_put = int(input("Choose a number : "))
n_nx1lst = list()
def n_nx1fct():
for i in range(0,n_put+1):
n_nx1lst.append(i)
return n_nx1lst
print ("List is : ", n_nx1fct())
print ('+'.join(str(n_nx1lst)) + " = ", sum(n_nx1lst))
答案 0 :(得分:6)
将int
中的每个list
元素更改为str
来电中的.join
,而不是使用generator expression
:
print("+".join(str(i) for i in n_nx1lst) + " = ", sum(n_nx1lst))
在第一种情况下,您在整个str
上调用list
而不是list
中的个别元素。因此,它连接列表的表示中的每个字符,如下所示:
'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'
带有+
符号的会产生您正在看到的结果。
答案 1 :(得分:4)
您无需在列表中拨打str
。返回列表的str表示,其输出与'+'
连接。
您可以使用map
将列表中的每个项目转换为str
,然后转换为join
:
print('+'.join(map(str, n_nx1lst)) + " = ", sum(n_nx1lst))
您还可以使用新样式格式来获得更易读的输出:
result = '+'.join(map(str, n_nx1lst))
print("{} = {}".format(result, sum(n_nx1lst)))
答案 2 :(得分:4)
您需要做的是将字符串元素连接到列表中每个元素的“+”元素。你需要的只是有一些字符串格式。
def sum_of_input():
n = int(raw_input("Enter a number : ")) # Get our raw_input -> int
l = range(n + 1) # Create our list of range [ x≥0 | x≤10 ]
print("List from zero to your number: {}".format(l))
print(' + '.join(str(i) for i in l) + ' = {}'.format(sum(l)))
示例输出:
>>> sum_of_input()
Enter a number : 10
List from zero to your number: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
它是如何运作的?
我们使用所谓的list comprehension (5.1.3)(此特定用途中的生成器)迭代我们的int
元素列表,创建list
{{} 1}}元素。 现在我们可以使用string
方法string
来创建我们想要的格式。
join()
答案 3 :(得分:0)
使用f-string
:
n_put = range(int(input("Choose a number : ")))
res = sum(n_put)
print ("List is : ", [*n_put])
print(*n_put, sep="+", end = f" = {res}")
给予
Choose a number : 5
List is : [0, 1, 2, 3, 4]
0+1+2+3+4 = 10