frames = []
frame_total = []
total = 0
while len(frames) < 2:
ball_one = int(raw_input('Enter the score of ball one: '))
ball_two = int(raw_input('Enter the score of ball two: '))
frame_total.append([ball_one, ball_two])
for frame in frame_total:
frames.append(frame_total)
b = sum(frames)
print(frame_total)
print(b)
这是我的代码。当我尝试打印出主数组中每个数组的总和时,我无法解决为什么我得到错误TypeError: unsupported operand type(s) for +: 'int' and 'list'
。任何想法?
这个想法是创造一个保龄球游戏。你在每一帧都有2个球,ball_one和ball_two。在每帧之后,我将这两个数字附加到一个数组。所以如果ball_one是8并且ball_two是1.那么它会添加[[8,2]]然后下一个如果b_1是4而b_2是4则会看起来像[[8,2],[4,4] ]。然后我想添加8和2以及4和4来制作。 [[10,8]]。然后最后总共这两个,所以18。
答案 0 :(得分:1)
您在b
循环的每次迭代中继续定义for
。你应该等到你确实需要它来定义它。
您继续将frame_total
追加到frames
而不是frame
。
您尝试查找列表列表的总和,而不是每个列表中的所有数字。
您更新的计划:
frame_total = []
while len(frames) < 2:
ball_one = int(raw_input('Enter the score of ball one: '))
ball_two = int(raw_input('Enter the score of ball two: '))
frame_total.append([ball_one, ball_two])
print(frame_total)
print(sum(sum(sub) for sub in frame_total))
如果您不喜欢生成器表达式:
frame_total = []
total = 0
while len(frames) < 2:
ball_one = int(raw_input('Enter the score of ball one: '))
ball_two = int(raw_input('Enter the score of ball two: '))
frame_total.append([ball_one, ball_two])
total += ball_one + ball_two
print(frame_total)
print(total)
答案 1 :(得分:0)
按如下方式更改:
frames = []
frame_total = []
total = 0
while len(frames) < 2:
ball_one = int(input('Enter the score of ball one: '))
ball_two = int(input('Enter the score of ball two: '))
frame_total.append(ball_one)
frame_total.append(ball_two)
b = 0
for frame in frame_total:
frames.append(frame_total)
b = b + frame
print(frame_total)
print(b)
答案 2 :(得分:0)
sum(iterable [,start])
总结开始和可迭代的项目 从左到右并返回总数。开始默认为0 iterable的项目通常是数字,而起始值则不是 允许是一个字符串。
您正在使用列表列表调用sum。由于您尚未提供start
,因此默认情况下为零。所以它基本上尝试添加一个int和一个列表。
尝试运行0 + [1,2,3]
,您就会明白错误是什么。
答案 3 :(得分:0)
您的frame_total
有一个元素,它是[ball_one, ball_two]
。当您将frame_total
追加到frames
时,frames
现在有一个元素,它仍然是[ball_one, ball_two]
。求和(帧)时,它会引发TypeError
,因为frames
元素是list
而不是int
。
答案 4 :(得分:0)
让我试试。您想要将每对[ball_one,ball_two]附加到帧中。之后,获取每对的总和并将其存储在另一个列表中,比如frames_total,最后显示所有内容的总和。这是代码:
frames = [] # will contain raw results in each frame. (ex. [[8, 2], [4, 4]])
frames_total = [] # will contain total values in each frame (ex. [10, 8])
total = 0 # sum of everything
while len(frames) < 2:
ball_one = int(raw_input('Enter the score of ball one: '))
ball_two = int(raw_input('Enter the score of ball two: '))
frames.append([ball_one, ball_two])
frames_total = [sum(frame) for frame in frames]
total = sum(frames_total)
print frames_total
print total
如果您想在每个回合后打印信息,这里的代码略有不同:
frames = [] # will contain raw results in each frame. (ex. [[8, 2], [4, 4]])
frames_total = [] # will contain total values in each frame (ex. [10, 8])
total = 0 # sum of everything
while len(frames) < 2:
ball_one = int(raw_input('Enter the score of ball one: '))
ball_two = int(raw_input('Enter the score of ball two: '))
frames.append([ball_one, ball_two])
frames_total.append(ball_one + ball_two)
total = sum(frames_total)
print frames
print frames_total
print total