【问题标题】:How do i fix this? "Unsupported operand type(s)"我该如何解决? “不支持的操作数类型”
【发布时间】:2019-08-01 18:14:31
【问题描述】:
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

我再次遇到错误。这次我得到这个错误:

TypeError: +: 'int' 和 'str' 的操作数类型不受支持

【问题讨论】:

  • 我很确定您的代码 sn-p 不完整,并且您在某处为运动员分配了号码
  • 您的numbers 是字符串。使用整数。

标签: python


【解决方案1】:

您可以像这样将数字列表中的字符串值更改为 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

【讨论】:

  • 好的,现在可以了,感谢您的帮助。我真的应该早点注意到,有点愚蠢的错误。
  • 我的快乐
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    判断分数在字符串和sum适用于int类型,你需要先将stirng转换为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
    

    【讨论】:

      【解决方案4】:

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

      另外,你可以输入

      numbers = list(range(10))
      

      【讨论】:

        猜你喜欢
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-19
        • 2021-08-17
        相关资源
        最近更新 更多