我该如何解决这个问题? "Unsupported operand type(s)"


import random 
athletes = ["John","Mike","Jack","Steve","Bob"]
judges = ["Judge1","Judge2","Judge3"]
numbers = ["1","2","3","4","5","6","7","8","9","10"]
def score():
  random.shuffle(numbers)
  judge_scores = numbers[0] + numbers[1] + numbers[2]
  final = int(judge_scores)
  final_2 = sum(final)
  print(final_2)

i = 0
while i <= 4:
    athlete = athletes[i]
    print(athlete + " scored:")
    score()
    i += 1
    if i > 4:
        break

我试图让这段代码返回评委为每个运动员给出的随机分数的总和,但我遇到一个错误,说

int 对象不可迭代。

我已经稍微改变了它,但没有运气,这是我认为最接近的原始代码:

import random 
athletes = ["John","Mike","Jack","Steve","Bob"]
judges = ["Judge1","Judge2","Judge3"]
numbers = ["1","2","3","4","5","6","7","8","9","10"]
def score():
  random.shuffle(numbers)
  judge_scores = numbers[0] + numbers[1] + numbers[2]
  final = sum(judge_scores)
  print(final)

i = 0
while i <= 4:
    athlete = athletes[i]
    print(athlete + " scored:")
    score()
    i += 1
    if i > 4:
        break

我再次遇到错误。 这次我收到此错误:

类型错误: + 不支持的操作数类型:"int"和"str">

您可以将数字列表中的字符串值更改为 int,如下所示:

import random 
athletes = ["John","Mike","Jack","Steve","Bob"]
judges = ["Judge1","Judge2","Judge3"]
numbers = [1,2,3,4,5,6,7,8,9,10]
def score():
  random.shuffle(numbers)
  judge_scores = numbers[0] + numbers[1] + numbers[2]
  print(judge_scores)

i = 0
while i <= 4:
    athlete = athletes[i]
    print(athlete + " scored:")
    score()
    i += 1
    if i > 4:
        break

或者您可以使用

import random 
athletes = ["John","Mike","Jack","Steve","Bob"]
judges = ["Judge1","Judge2","Judge3"]
numbers = ["1","2","3","4","5","6","7","8","9","10"]
def score():
  random.shuffle(numbers)
  judge_scores = int(numbers[0]) + int(numbers[1]) + int(numbers[2])
  print(judge_scores)

i = 0
while i <= 4:
    athlete = athletes[i]
    print(athlete + " scored:")
    score()
    i += 1
    if i > 4:
        break

您是否有一个带有数字的列表,因为str尝试将数字更改为数字 = [1,2,3,4,5,6,7,8,9,10]

判断字符串分数,sum适用于 int 类型,您需要先将搅拌转换为 int,然后进行求和运算

import random 
athletes = ["John","Mike","Jack","Steve","Bob"]
judges = ["Judge1","Judge2","Judge3"]
numbers = ["1","2","3","4","5","6","7","8","9","10"]
def score():
  random.shuffle(numbers)
  judge_scores = [numbers[0] , numbers[1] , numbers[2]]
  final = sum(map(int,judge_scores))
  print(final)

i = 0
while i <= 4:
    athlete = athletes[i]
    print(athlete + " scored:")
    score()
    i += 1
    if i > 4:
        break

sum 采用可迭代对象并对其值求和。在您的情况下,numbers包含字符串,因此它会连接字符串:('2', '5', '7')转到'257'。在[1,2,...]中更改您的numbers列表,一切都会好起来的。

另外,您只需输入即可

numbers = list(range(10))

相关内容

最新更新