Crossin的编程教室
标题:
求助:使用print(f.read())之后f.read()的bool值发生了变化
[打印本页]
作者:
ftnuk
时间:
2018-11-16 00:41
标题:
求助:使用print(f.read())之后f.read()的bool值发生了变化
本帖最后由 ftnuk 于 2018-11-16 00:45 编辑
我使用的是win10下运行的py3.7
我是一个初学者,看crossin公众号学习到用文件保存游戏中,完成作业后发现结果和我想的不一样,把前面代码切出来单独运行后发现这些问题,百度了没有能看懂的解释....所以跪求大神们帮忙解释一下:
2018-11-16 00:28 上传
下载附件
(4.46 KB)
使用print后bool值变了
用print(f.read())加在前面后
2018-11-16 00:31 上传
下载附件
(6.02 KB)
本来是查找为什么readlines()会返回一个空列表,结果发现了上面的情况,下面的也请解释一下
2018-11-16 00:38 上传
下载附件
(5.1 KB)
作业完整版本(不会是后面写入有问题吧...)
f = open("mark.txt")
if bool(f.read()) == False:
print("This is a New Game")
else:
mark = f.readlines()
print(mark)
a = 0
b = 0
for i in mark:
if b < int(i):
b = int(i)
a += 1
print("This is the %dth game,Best score is %d"%(a,b))
f.close()
def guess(num1,num2):
if num1 < num2:
print("%d is too small"%num1)
return False
elif num1 > num2:
print("%d is too big"%num1)
return False
else:
print("Bingo")
return True
from random import randint
num = randint (1,1000)
print("Guess whta I think?(1-1000)")
score = 0
c = False
while c == False:
answer = int(input())
score += 1
c = guess(answer,num)
f = open("mark.txt","a")
d = str(score)+"\n"
f.write(d)
f.close()
作者:
crossin先生
时间:
2018-11-16 13:46
read只能一次,你要重新read的话,需要 f.seek(0) ,或者重新打开文件
作者:
ftnuk
时间:
2018-11-16 19:12
本帖最后由 ftnuk 于 2018-11-16 19:43 编辑
crossin先生 发表于 2018-11-16 13:46
read只能一次,你要重新read的话,需要 f.seek(0) ,或者重新打开文件
谢谢cross老师,终于搞懂了
f = open("mark.txt")
if bool(f.read()) == False:
print("This is a New Game")
else:
mark = f.readlines()
a = 0
b = 0
for i in mark:
print(i)
if b < int(i):
b = int(i)
a += 1
print("This is the %dth game,Best score is %d"%(a,b))
f.close()
上面的程序在 if bool(f.read()) == False: 的时候read已经读过一次了,所以后面else 的readlines再读的时候就为空了。
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/)
Powered by Discuz! X2.5