py大神 发表于 2017-12-13 01:16:20

Python字符串格式化问题

这个程序可以正常运行
#求一个文件中的数字的平均数
name = input('请输入文件路径和文件名:')
file = open(name,'r')
file_line = file.readline()
sum1 = 0.0
count = 0
while file_line != '':
    for i in file_line.split(','):
      sum1 += eval(i)
      count += 1
    file_line = file.readline()
print('平均数是:',sum1 / count)
经过修改在最后加上字符串格式化符号
#求一个文件中的数字的平均数
name = input('请输入文件路径和文件名:')
file = open(name,'r')
file_line = file.readline()
sum1 = 0.0
count = 0
while file_line != '':
    for i in file_line.split(','):
      sum1 += eval(i)
      count += 1
    file_line = file.readline()
print('平均数是:%f' % sum1 / count)


下面是错误类型:Traceback (most recent call last):
File "D:\Python练习文件夹\python练习\一些小程序\求一个文件中数字的平均数.py", line 12, in <module>
    print('平均数是:%f' % sum1 / count)
TypeError: unsupported operand type(s) for /: 'str' and 'int'
求问为什么加上格式化符号后会报错?

yjsx86 发表于 2017-12-13 03:07:43

本帖最后由 yjsx86 于 2017-12-13 03:13 编辑

不是格式化出错
而是不支持 字符串 除以 整数
%和/是同级的
你需要
print('平均数是:%f' % (sum1 / count))

BngThea 发表于 2017-12-13 08:57:20

print('平均数是:',sum1 / count)这个可以运行,因为有逗号,会先计算sum1/count
print('平均数是:%f' % sum1 / count)不能运行,因为会将sum1的值替换%f,然后在将前面的字符串除以count
所以出现了 str/int的情况,当然报错

hustlin 发表于 2017-12-13 15:53:32

测试了下,如附件所示。问题明白了么?

py大神 发表于 2017-12-13 23:43:01

hustlin 发表于 2017-12-13 15:53
测试了下,如附件所示。问题明白了么?

谢谢,我明白了

py大神 发表于 2017-12-13 23:43:42

yjsx86 发表于 2017-12-13 03:07
不是格式化出错
而是不支持 字符串 除以 整数
%和/是同级的


明白了,谢谢{:10_254:}
页: [1]
查看完整版本: Python字符串格式化问题