HackerRank Plus Minus题报TypeError unpack int对象错误如何解决
问题根因分析
- 第一个错误直接对应报错栈中的
TypeError: cannot unpack non-iterable int object,问题出在neg,pos,zero=0这行:Python 中如果要同时给多个变量赋相同初始值,右侧需要提供对应长度的可迭代对象,你右侧只有单个整数0,无法拆分赋值给3个变量,正确写法为neg, pos, zero = 0, 0, 0。 - 第二个逻辑错误:计数时你写的是
neg+=0、pos+=0、zero+=0,无论遍历到什么元素,三个计数器的值永远不会变化,始终为0,需要把增量改为1,也就是neg += 1、pos += 1、zero +=1。 - 可选的规则适配:HackerRank的Plus Minus题目要求输出结果保留6位小数,直接打印浮点数可能出现位数不足的情况,建议使用格式化输出适配题目要求。
修正后完整代码
import math import os import random import re import sys # # 完成'plusMinus'函数 # # 函数接收整数数组arr作为参数 # def plusMinus(arr): # 初始化计数器 neg, pos, zero = 0, 0, 0 for i in range(len(arr)): if arr[i] < 0: neg += 1 elif arr[i] > 0: pos += 1 else: zero += 1 # 格式化输出6位小数 print("{0:.6f}".format(pos / len(arr))) print("{0:.6f}".format(neg / len(arr))) print("{0:.6f}".format(zero / len(arr))) return 0 if __name__ == '__main__': n = int(input().strip()) arr = list(map(int, input().rstrip().split())) plusMinus(arr)
内容的提问来源于stack exchange,提问作者ZeroSSD
相关产品推荐
相关产品推荐

