鱼C论坛

 找回密码
 立即注册
查看: 1933|回复: 4

[已解决]视频04中的赋值问题

[复制链接]
发表于 2016-6-22 11:16:02 | 显示全部楼层 |阅读模式

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

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

x

图片中红框内已经给temp和guess赋值了,
为什么在while的循环体内还要再次复制?
如果把whil内的temp和guess注释掉就陷入了死循环。
最佳答案
2016-7-24 15:27:45
本帖最后由 shaohan0228 于 2016-7-24 15:28 编辑

这个程序我是这样理解的
首先程序你在while循环外要求对guess进行比对和输入是没有意义的,这样的话相当于你实际上是猜了4次数字,而且在第一次猜测的过程中没有提示具体的大小指示,这就是为什么小甲鱼要提前输入一个不可能的数值
while循环内的temp应该是属于局部变量,在不停的被赋值。
这个是我最后根据要求修改的程序:
  1. import random #引入随机数模块
  2. secret = random.randint(1,10) #设置变化范围为1至10的正整数
  3. guess = 0
  4. #对guess赋值,设置guess为一个绝对不可能等于secret的数值,防止程序运行就猜对数字结束;
  5. #同时也不能让guess含有input语法,否则猜不对会直接跳入下一局而不会提示大小
  6. times = 3 #设置times的值为3
  7. while (guess != secret) and (times !=0): #只有当没有猜对且次数没有耗尽的时候才会继续
  8.     times -= 1  #每循环一次,次数减去1,知道为0,while循环结束
  9.     guess = int(input("猜吧,你的数字是多少:"))  #guess开始进行赋值
  10.     if guess == secret:        #当猜对的时候,输出结果对了,并返回while一个false的结果,程序结束,直接打印最后一句
  11.         print("我草,你竟然猜对了")
  12.         #times = 0  #我多写了这一句,实际上不需要,当guess == secret 为true时即为guess !=secret为false,循环直接结束,打印最后一句
  13.     else:
  14.         if guess > secret:
  15.             print("不好意思,猜错了,大了!")
  16.         else:
  17.             print("小了!小了!!")
  18.         if times >0:   #只有当结果不对时没程序运行到这一步,并且提醒还有机会
  19.             print("再来一次吧!")
  20.         else:
  21.             print("你的机会没有了")
  22. print("游戏结束了,不玩了")
复制代码

红框内已经给temp和guess赋值了,为什么在while的循环体内还要再次赋值?

红框内已经给temp和guess赋值了,为什么在while的循环体内还要再次赋值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-22 12:12:11 | 显示全部楼层
这是一个循环体,第一次赋值是要进入循环前,判断是不是正好和secruct相同;第二次赋值,是因为在循环中要允许用户猜多次,如果不再次赋值,没法实现用户猜多次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 12:49:12 | 显示全部楼层
后面课程还有例子的,input都是在循环体内的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-3 18:42:54 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-24 15:27:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 shaohan0228 于 2016-7-24 15:28 编辑

这个程序我是这样理解的
首先程序你在while循环外要求对guess进行比对和输入是没有意义的,这样的话相当于你实际上是猜了4次数字,而且在第一次猜测的过程中没有提示具体的大小指示,这就是为什么小甲鱼要提前输入一个不可能的数值
while循环内的temp应该是属于局部变量,在不停的被赋值。
这个是我最后根据要求修改的程序:
  1. import random #引入随机数模块
  2. secret = random.randint(1,10) #设置变化范围为1至10的正整数
  3. guess = 0
  4. #对guess赋值,设置guess为一个绝对不可能等于secret的数值,防止程序运行就猜对数字结束;
  5. #同时也不能让guess含有input语法,否则猜不对会直接跳入下一局而不会提示大小
  6. times = 3 #设置times的值为3
  7. while (guess != secret) and (times !=0): #只有当没有猜对且次数没有耗尽的时候才会继续
  8.     times -= 1  #每循环一次,次数减去1,知道为0,while循环结束
  9.     guess = int(input("猜吧,你的数字是多少:"))  #guess开始进行赋值
  10.     if guess == secret:        #当猜对的时候,输出结果对了,并返回while一个false的结果,程序结束,直接打印最后一句
  11.         print("我草,你竟然猜对了")
  12.         #times = 0  #我多写了这一句,实际上不需要,当guess == secret 为true时即为guess !=secret为false,循环直接结束,打印最后一句
  13.     else:
  14.         if guess > secret:
  15.             print("不好意思,猜错了,大了!")
  16.         else:
  17.             print("小了!小了!!")
  18.         if times >0:   #只有当结果不对时没程序运行到这一步,并且提醒还有机会
  19.             print("再来一次吧!")
  20.         else:
  21.             print("你的机会没有了")
  22. print("游戏结束了,不玩了")
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
闹闹破 + 3 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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