Crossin的编程教室

标题: 关于赋值的逻辑问题 [打印本页]

作者: pylearner    时间: 2017-12-18 13:52
标题: 关于赋值的逻辑问题
对于标红语句请问crosssin先生,如果我的初始文件设置为0 0 0 那么最小游戏次数(mintimes)就会永远为零, 如何实现将第一次游戏的times赋给mintimes,其后所有times与最小值mintimes比较?
from random import randint
f = open('c:\python\game.txt')
score = f.read().split()
f.close()
gametimes = int(score[0])
mintimes   = int (score[1])
totaltimes = int (score[2])
if gametimes > 0:
    avgtimes = totaltimes / gametimes
else:
    avgtimes =0
print('你完了%d次,最少%d轮猜出,平均%.3f猜出答案'%(
gametimes, mintimes, avgtimes))

num = randint (1,10)
times = 0
print("开始猜")
bingo = False
while bingo == False:
      times += 1
      answer = int(input ())
      if answer < num:
          print ('small')
      if answer == num:
          print ('bingo')
          bingo = True
      if answer > num:
          print('big')
totaltimes += times
gametimes +=1
if gametimes == 0 or times < mintimes :
      mintimes = times
result = '%d %d %d'%(gametimes, mintimes, totaltimes)

f = open ('c:\python\game.txt','w')
f.write (result)
f.close()



作者: TED    时间: 2017-12-18 14:22
可以把初始的mintimes设置个比较大的值比如100,  保证第一次作比较是第一次游戏的times比它小就好了
作者: pylearner    时间: 2017-12-18 15:29
TED 发表于 2017-12-18 14:22
可以把初始的mintimes设置个比较大的值比如100,  保证第一次作比较是第一次游戏的times比它小就好了 ...

谢谢,您说的确实是方法,但是这样初始的是最少玩100次 不符合实际啊.
作者: TED    时间: 2017-12-18 16:10
pylearner 发表于 2017-12-18 15:29
谢谢,您说的确实是方法,但是这样初始的是最少玩100次 不符合实际啊.

你显示的时候可以不显示初始值为100啊。。 mintime是记录玩的最小值的,它的初始值本身就是没有意义的。。 你可以在初始值定义的时候还是0,只在下面开始第一此比较的时候把它的值换成100 来完成第一次的比较赋值,并不会显示在输出或记录文件中。。
作者: pylearner    时间: 2017-12-19 02:34
本帖最后由 pylearner 于 2017-12-19 03:01 编辑
TED 发表于 2017-12-18 16:10
你显示的时候可以不显示初始值为100啊。。 mintime是记录玩的最小值的,它的初始值本身就是没有意义的。 ...

谢谢! 但是我不明白放在哪里让这个mintimes = 100 只执行一次.
作者: TED    时间: 2017-12-19 09:28
pylearner 发表于 2017-12-19 02:34
谢谢! 但是我不明白放在哪里让这个mintimes = 100 只执行一次.

from random import randint
f = open('c:\python\game.txt')
score = f.read().split()
f.close()
gametimes = int(score[0])
mintimes   = int (score[1])
totaltimes = int (score[2])
if gametimes > 0:
     avgtimes = totaltimes / gametimes
else:
     avgtimes =0
print('你完了%d次,最少%d轮猜出,平均%.3f猜出答案'%(
gametimes, mintimes, avgtimes))

num = randint (1,10)
times = 0
print("开始猜")
bingo = False
while bingo == False:
       times += 1
       answer = int(input ())
       if answer < num:
           print ('small')
       if answer == num:
           print ('bingo')
           bingo = True
       if answer > num:
           print('big')
totaltimes += times
gametimes +=1
if mintimes==0:
      mintimes = 100

if gametimes == 0 or times < mintimes :
      mintimes = times
result = '%d %d %d'%(gametimes, mintimes, totaltimes)

f = open ('c:\python\game.txt','w')
f.write (result)
f.close()

作者: TED    时间: 2017-12-19 15:41
pylearner 发表于 2017-12-19 02:34
谢谢! 但是我不明白放在哪里让这个mintimes = 100 只执行一次.

不对欸 它这个条件语句里面不是已经有个 if gametimes==0了么。。 这个不就可以保证第一次的时候 把玩的结果直接赋给mintimes了么。。 也不用再设大值什么的了
作者: pylearner    时间: 2017-12-19 16:07
TED 发表于 2017-12-19 15:41
不对欸 它这个条件语句里面不是已经有个 if gametimes==0了么。。 这个不就可以保证第一次的时候 把玩的 ...

恩恩 我也发现了...




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5