因此,我已经彻底研究了如何执行此操作,但是即使如此,我仍然遇到许多问题。这是一个接一个的错误。例如
Traceback (most recent call last):
File "C:/Users/Owner.OWNER-PC/AppData/Local/Programs/Python/Python37-32/lab 5 maybe.py", line 41, in <module>
main()
File "C:/Users/Owner.OWNER-PC/AppData/Local/Programs/Python/Python37-32/lab 5 maybe.py", line 8, in main
rand_gen(myfile)
File "C:/Users/Owner.OWNER-PC/AppData/Local/Programs/Python/Python37-32/lab 5 maybe.py", line 19, in rand_gen
my_file.write(line +'\n')
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我在此代码中收到此错误。而且我不知道如何解决类型错误。我一直待在这似乎要花几个小时,而我所做的每一个改变似乎都会带来更多的问题。我已经读完了这本书,但没有提供任何帮助。我得到了一些东西,但这对我根本没有用。我一直在不懈地搜寻论坛。 总的来说,它需要让用户命名要写入的文件,这是可行的。 当调用其他函数以写入文件或从文件读取文件时,还需要传递参数。 第二个功能是将一系列随机数写入1-500之间的文件中,并且还需要询问要执行多少个随机数才能起作用(这意味着用户可以要求输入随机数),然后给出错误信息。 最后,第三个功能需要显示生成的数字数量,数字总和和数字平均值!预先谢谢你。
import random
import math
def main():
myfile = str(input("Enter file name here "))
with open(myfile, 'w+') as f:
rand_gen(myfile)
return f
myfile.close
disp_stats()
def rand_gen(myfile):
my_file = open(myfile, 'w')
for count in range(int(input('How many random numbers should we use?'))):
line = random.randint(1,500)
my_file.write(line +'\n')
my_file.close()
def disp_stats():
myfile = open(f,"r")
total = 0
count = 0
print('The numbers are: ')
for line in myfile:
number = int(line)
total += number
count += 1
print(number)
average = total / count
data = np.loadtxt(f)
print('The count is ',count,)
print('The sum is',total,)
print('The average is ',format(average, '.2f'))
myfile.close
main()
答案 0 :(得分:0)
当您发现回溯错误时,请查看最后一行以查看导致错误的顶级原因。
my_file.write(line +'\n')
和
TypeError: unsupported operand type(s) for +: 'int' and 'str'
很明显,它暗示了表达式line +'\n'
+
运算符期望两个参数都具有相同的类型。(它无法找到任何采用int和字符串的重载函数定义。
这是因为line是一个整数(由randint
生成),而'\ n'是一个字符串。
因此将行强制转换为字符串
line -> str(line).
新的正确行应为
my_file.write(str(line) +'\n')
答案 1 :(得分:0)
如错误消息所述,TypeError: unsupported operand type(s) for +: 'int' and 'str'
。您无法将“整数”(line
和random.randint(1,500)
与“字符串” '\n'
串联在一起。
您可以执行以下操作:
my_file.write(str(line) +'\n')