# 题目:对于一个整数列表,如果有一个切分位置使其前面的元素之和等于后面的元素之和,就称该位置是平衡点
# 请编写程序求列表(整数列表)的平衡点,不存在时给出提示。
# 思路:
# 1.确定一个位置
# 2.求在这个位置前面的元素之和,与在这个位置后面的元素之和,做比较,判断是否相等
# 2.1 怎么求前面元素之和:
# 假设这个位置是[i],那么前面元素就是[0]~[i-1], 后面元素为[i+1]~[len(list)-1]
# 进行求和:累加求和
# 2.2判断是否相等,相等给出这个平衡位置:不相等,输出“该列表不存在平衡点”
a=list(input('请输入一个整数列表:',))
flag=0
for i in range(0,len(a)-1):
s1=0
for m in range(0,i):
s1+=a[m]
s2=0
for n in range(i+1,len(a)):
s2+=a[n]
if s1==s2:
print('该整数列表存在平衡点,且平衡点为:',a[i])
flag=1
break
if flag==0:
print('该整数列表不存在平衡点')
软件报给的错误是这个: s2+=a[n]
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
可是这两个不都是数值类型吗?
a=input('请输入一个整数列表:').split(",")
flag=0
for i in range(0,len(a)-1):
s1=0
for m in range(0,i):
s1+=int(a[m])
s2=0
for n in range(i+1,len(a)):
s2+=int(a[n])
if s1==s2:
print('该整数列表存在平衡点,且平衡点为:',a[i])
flag=1
break
if flag==0:
print('该整数列表不存在平衡点')6
如果输入的数是用逗号分隔的 1,3,5,7 要这样解析成列表
a=input('请输入一个整数列表:').split(",")
a[n]是字符串,要用int()或float()转成数值
s2+=int(a[n])
s2+=a[n] 改为 s2+=int(a[n])
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y