设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10860|回复: 7
打印 上一主题 下一主题

关于赋值的逻辑问题

[复制链接]

6

主题

0

好友

116

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2017-12-18 13:52:57 |只看该作者 |倒序浏览
对于标红语句请问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()


回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

沙发
发表于 2017-12-18 14:22:19 |只看该作者
可以把初始的mintimes设置个比较大的值比如100,  保证第一次作比较是第一次游戏的times比它小就好了
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

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

谢谢,您说的确实是方法,但是这样初始的是最少玩100次 不符合实际啊.
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

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

你显示的时候可以不显示初始值为100啊。。 mintime是记录玩的最小值的,它的初始值本身就是没有意义的。。 你可以在初始值定义的时候还是0,只在下面开始第一此比较的时候把它的值换成100 来完成第一次的比较赋值,并不会显示在输出或记录文件中。。
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

5#
发表于 2017-12-19 02:34:24 |只看该作者
本帖最后由 pylearner 于 2017-12-19 03:01 编辑
TED 发表于 2017-12-18 16:10
你显示的时候可以不显示初始值为100啊。。 mintime是记录玩的最小值的,它的初始值本身就是没有意义的。 ...

谢谢! 但是我不明白放在哪里让这个mintimes = 100 只执行一次.
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

6#
发表于 2017-12-19 09:28:29 |只看该作者
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()
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

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

不对欸 它这个条件语句里面不是已经有个 if gametimes==0了么。。 这个不就可以保证第一次的时候 把玩的结果直接赋给mintimes了么。。 也不用再设大值什么的了
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

8#
发表于 2017-12-19 16:07:20 |只看该作者
TED 发表于 2017-12-19 15:41
不对欸 它这个条件语句里面不是已经有个 if gametimes==0了么。。 这个不就可以保证第一次的时候 把玩的 ...

恩恩 我也发现了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-9 07:43 , Processed in 0.031149 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部