鱼C论坛

 找回密码
 立即注册
查看: 2986|回复: 7

[已解决]求[课后作业] 第004讲:改进我们的小游戏的代码书写逻辑,我能看懂,但是实在不理解。

[复制链接]
发表于 2019-1-28 09:11:20 | 显示全部楼层 |阅读模式

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

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

x
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
# 这里先给guess赋值(赋一个绝对不等于secret的值)
guess = 0
# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1 # 用户每输入一次,可用机会就-1
    if guess == secret:
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:
        if guess > secret:
            print("哥,大了大了~~~")
        else:
            print("嘿,小了,小了~~~")
        if times > 0:
            print("再试一次吧:", end=" ")
        else:
            print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
最佳答案
2019-1-29 14:20:51
首先你要先把上面涉及到的这些语法理解了,并且会用,这是基本的。然后把相应的英语单词读懂,阅读起来会好理解写。还有就是这个游戏的思路首先你得自己清楚,然后再结合代码,按照一定的逻辑就能理解下去了。还是要基础知识扎实了,看懂也就不难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-29 01:30:48 | 显示全部楼层
本帖最后由 回眸笑傾城 于 2019-1-29 01:37 编辑

因为嘛,我没有购买鱼哥的这个帖子,所以好像没有做过这个测验,
但我觉得还是可以尝试解答一下,
因为也是新手一枚,我解答的也不知道对不对,参考一下就好了..
顺便牢固一下知识
import random <--------影片中說過,因為我們要設一個隨機的數目,所以在腳步開始前先設一個內置模塊(import)而參數為ramdom(隨機)
                                                        至於為什麼要放在最前!其實我嘗試過,因為我有強迫症,
                                                        所以在最開始先打印了歡迎來到遊戲的字句,
                                                        但發覺是對import ramdom是沒有影響的,
                                                        所以我想 只要在secret = random.randint(1,10)前輸入就可以了
                                                        你總不能在secret = random.randint(1,10)之後才打印
                                                        import ramdom吧,肯定運行錯誤的

times = 3 <------------跟上面一样,先设置好机会(猜数字的次数)
                               总不能开始游戏后猜错了再设置吧,
                               必须游戏开始前先设定好了

secret = random.randint(1,10)<-------------也是一样 先把开局条件设置好,这里是随机的数字,刚刚就说了,如果把import ramdom放到之後肯定不行的
所以就以上来说顺序,我也尝试了一下,
import random跟times变数赋值的操作可以互换

print('------------------我爱鱼C工作室------------------')
# 这里先给guess赋值(赋一个绝对不等于secret的值)
guess = 0 <---这里肯定要先赋值呀,不然你下面的操作就运行不了
# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0): <----前面主要参数都设置好了,才可以进行操作                                                                要是你把这个循环项放到最顶,                                                                   那必须出错了,因为guess跟times这两个变数我们还没有给他赋值呢
    temp = input() <---这里就是你给temp这个变数赋值了,赋值为玩家输入的数值(当没有进行转换类型时,都是默认为以字符串输入的)
    guess = int(temp)<----------这里就是第二个步骤了,转型,不然又得报错了!
    times = times - 1 # 用户每输入一次,可用机会就-1 <-----这里就很简单了解了,输入一次,机会-1,为什么不把他放到temp上面呢?
因为我们是说好了嘛,三次机会,要是把他放到上面,就会先执行次数-1,然后再给玩家输入(input)的指令,那第三次岂不是还没猜就结束了呢?!
    if guess == secret:<-------为什么这个if要放到这呢?!放上面不行吗???不行的,在上面guess我们还没有赋值呀,所以肯定得放到这里了
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:<---很好理解了吧,假设上面的IF(就是数字没有猜中呀,就运作以下的项目了)
        if guess > secret:<---就是假设 guess(玩家输入的数字)>(大过)secret(我们上面设置的随机数字)就出现:
            print("哥,大了大了~~~")
        else:<-----------严格来说是对上的IF条件不成立就出现以下:
            print("嘿,小了,小了~~~")
        if times > 0:
            print("再试一次吧:", end=" ")<-------------------这一段其实可以放到if guess前,times-1之后                                                                                             
                                                                                                                          而不影响运行

                                                                                             因为times我们在开始已经赋值了
                                                                                            唯一分别在于三次机会用光后
                                                                                            print打印("机会用光了")会在最前
        else:
            print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
大致上的流程就是这样,
因为脚本运行是由上到行,
所以必须按着顺序走
例如,在对变量(设X)进作操作前,
你必须给他赋值呀,不然怎样弄呢??
if(设)肯定要在else(否则)之前呀
不然你否则啥呢是不是??!
我也不知道我有没有解答到你的问题,
参考参考就好,因为我不确定我有没有地方说错了,
但这是我大概的粗浅理解..

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

使用道具 举报

发表于 2019-1-29 14:20:51 | 显示全部楼层    本楼为最佳答案   
首先你要先把上面涉及到的这些语法理解了,并且会用,这是基本的。然后把相应的英语单词读懂,阅读起来会好理解写。还有就是这个游戏的思路首先你得自己清楚,然后再结合代码,按照一定的逻辑就能理解下去了。还是要基础知识扎实了,看懂也就不难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-28 09:16:01 | 显示全部楼层
主要是为什么先写这个,为什么后写那个,整个代码的书写顺序,和书写逻辑,不懂。
新手见谅!
另外,能附个流程图吗?我也想画流程图,不会,有图可能会更清晰一些。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-28 11:31:19 | 显示全部楼层
flkj 发表于 2019-1-28 09:16
主要是为什么先写这个,为什么后写那个,整个代码的书写顺序,和书写逻辑,不懂。
新手见谅!
另外,能附 ...

写多了就明白了,就是个思维模式。

思维模式全靠代码养起来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-4 15:53:24 | 显示全部楼层
您写的太好了,只是我点最佳答案,不知道为什么会到楼下去了,不好意思,再次感谢您的帮助,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 22:26:58 | 显示全部楼层
回眸笑傾城 发表于 2019-1-29 01:30
因为嘛,我没有购买鱼哥的这个帖子,所以好像没有做过这个测验,
但我觉得还是可以尝试解答一下,
因为也是新 ...

你好,我想请问一下为什么guess的值从0变成了print后面输入的值呢
guess = 0 <---这里肯定要先赋值呀,不然你下面的操作就运行不了
# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 19:36:04 From FishC Mobile | 显示全部楼层
xaiojie 发表于 2019-11-18 22:26
你好,我想请问一下为什么guess的值从0变成了print后面输入的值呢
guess = 0

guess = int(temp)
因为这个呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 19:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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