鱼C论坛

 找回密码
 立即注册
查看: 1227|回复: 1

[已解决]猜数字游戏的疑问

[复制链接]
发表于 2017-8-23 06:17:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对小甲鱼老师的猜数字游戏代码,又研究了下,有几点疑问,请大神们帮忙答疑:
import random
import time
times = 3   
secret = random.randint(1,10)
print('------我爱鱼C工作室------')
print('猜猜我现在心里想的是什么数字吧:', end = '')  # 为什么这里用的print语句,直接用temp = input('猜猜我现在心里想的是什么数字吧:', end = '')不是可以节省语句?
guess = 0   # 为什么guess这个变量,在使用前要先赋值? 直接用guess = int(temp)不可以吗? 是不是说,因为temp要参与循环,必须用temp = input
while (guess !=secret) and (times > 0):
    temp= input()
    guess = int(temp)  #这里貌似取消guess这个变量,先用给temp赋值0,再用temp = int(input()), 后面完全用temp取代guess,也是可以的。这样会有什么区别吗?另外,guess先赋值0,是在1~10的区间之外,那我赋值11,是否也可以呢?
    if guess == secret:  #while语句的前提条件是 guess != secret,而这里又用到guess == secret,感觉前后矛盾,可是程序又能正常运行,怎么回事?
        print('你真是我肚里的蛔虫啊!')
    else:
        if guess > secret:
            print('哥,大了大了')
        else:
            print('嘿,小了小了')
        if times > 0:  
            print('猜错了,再来一次吧:', end = '')
        else:
            print('机会用光咯T_T')
        times -=1        
print('游戏结束,不玩啦^_^')
print(time.process_time()) #貌似运行几次程序的时间,是在变化的,每次都不一样~~为什么?如果应用到大型程序中,不是每次都一样会有时间差别?小程序是0.0几秒的差别,大程序会有多大的差别呢?分钟?
       
最佳答案
2017-8-23 07:58:54
print('猜猜我现在心里想的是什么数字吧:', end = '')  # 为什么这里用的print语句,直接用temp = input('猜猜我现在心里想的是什么数字吧:', end = '')不是可以节省语句?
因为这句话只想出现一次,后面都是大了小了等,所以就跟input不合在一起了。另input没有 end参数。

guess = 0   # 为什么guess这个变量,在使用前要先赋值? 直接用guess = int(temp)不可以吗? 是不是说,因为temp要参与循环,必须用temp = input
如果在循环体前先用input和int给guess赋值当然可以,这要稍调整程序结构。

guess = int(temp)  #这里貌似取消guess这个变量,先用给temp赋值0,再用temp = int(input()), 后面完全用temp取代guess,也是可以的。这样会有什么区别吗?另外,guess先赋值0,是在1~10的区间之外,那我赋值11,是否也可以呢?
guess的整数,temp是字符串,为了比较数字的大小所以要转换成整数,guess预先赋值只要不在答案范围都行

if guess == secret:  #while语句的前提条件是 guess != secret,而这里又用到guess == secret,感觉前后矛盾,可是程序又能正常运行,怎么回事?
这就要看此句是在while之前还是之后了,表面看实在之后,但第一次循环guess是不等于的进入循环,然后是input等到guess,这是的次序是先if判断再返回到while判断,所以并不矛盾。

print(time.process_time()) #貌似运行几次程序的时间,是在变化的,每次都不一样~~为什么?如果应用到大型程序中,不是每次都一样会有时间差别?小程序是0.0几秒的差别,大程序会有多大的差别呢?分钟?
由于python的管理机制,特别是内存中变量回收机制,使得程序的运行时间并不一样,对于一个大程序可能在中间“暂停”一段时间,来处理变量回收等操作,因此python不适合实时控制等对时间要求严格的场所。大程序运行时间的差别会有一定的放大,但不会等比例的放大。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-23 07:58:54 | 显示全部楼层    本楼为最佳答案   
print('猜猜我现在心里想的是什么数字吧:', end = '')  # 为什么这里用的print语句,直接用temp = input('猜猜我现在心里想的是什么数字吧:', end = '')不是可以节省语句?
因为这句话只想出现一次,后面都是大了小了等,所以就跟input不合在一起了。另input没有 end参数。

guess = 0   # 为什么guess这个变量,在使用前要先赋值? 直接用guess = int(temp)不可以吗? 是不是说,因为temp要参与循环,必须用temp = input
如果在循环体前先用input和int给guess赋值当然可以,这要稍调整程序结构。

guess = int(temp)  #这里貌似取消guess这个变量,先用给temp赋值0,再用temp = int(input()), 后面完全用temp取代guess,也是可以的。这样会有什么区别吗?另外,guess先赋值0,是在1~10的区间之外,那我赋值11,是否也可以呢?
guess的整数,temp是字符串,为了比较数字的大小所以要转换成整数,guess预先赋值只要不在答案范围都行

if guess == secret:  #while语句的前提条件是 guess != secret,而这里又用到guess == secret,感觉前后矛盾,可是程序又能正常运行,怎么回事?
这就要看此句是在while之前还是之后了,表面看实在之后,但第一次循环guess是不等于的进入循环,然后是input等到guess,这是的次序是先if判断再返回到while判断,所以并不矛盾。

print(time.process_time()) #貌似运行几次程序的时间,是在变化的,每次都不一样~~为什么?如果应用到大型程序中,不是每次都一样会有时间差别?小程序是0.0几秒的差别,大程序会有多大的差别呢?分钟?
由于python的管理机制,特别是内存中变量回收机制,使得程序的运行时间并不一样,对于一个大程序可能在中间“暂停”一段时间,来处理变量回收等操作,因此python不适合实时控制等对时间要求严格的场所。大程序运行时间的差别会有一定的放大,但不会等比例的放大。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 13:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表