鱼C论坛

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

[技术交流] 《零基础入门学习Python》学习笔记004改进我们的小游戏

[复制链接]
发表于 2017-7-14 12:55:28 | 显示全部楼层 |阅读模式

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

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

x
游戏可以提出三个方面的改进。
1.猜错的时候可以给点提示。
2.一次运行,可不可以多几次猜错,毕竟并不是所有人都能一次猜对。
3.可不可 以让答案是随机的,这样才有趣味不是吗?

先来实现第一个要求:
无非就是判断用户输入的数据是大了还是小了。所以我们需要分支判断来帮助我们实现此功能。判断就离不开比较。现把Python的比较操作符给出:
<左边小于右边
>左边大于右边
<=左边小于等于右边
>=左边大于等于右边
==左边等于右边
!=左边不等于右边


第一次改进的小游戏(1.0版)

  1. guess = int(input("请输入一个数字:"))
  2. if guess == 8:
  3.     print("哇艹,你是小甲鱼肚子里的蛔虫吗?")
  4.     print("哼,猜对的也没有奖励!")
  5. else:
  6.     if guess > 8:
  7.         print("哥。大了~")
  8.     else:
  9.         print("嘿!小了~")
  10. print("游戏结束!不玩了~")
复制代码

第二个要求:一次运行多次判断,需要while循环来实现。

第二次改进的小游戏(2.0)
  1. guess = int(input("请输入一个数字:"))
  2. while guess != 8:
  3.     guess = int(input("猜错了~不妨再猜一次:"))
  4.     if guess == 8:
  5.         print("哇靠,你是小甲鱼肚子里的蛔虫吗?")
  6.         print("哼,猜对的也没有奖励!")
  7.     else:
  8.         if guess > 8:
  9.             print("哥。大了~")
  10.         else:
  11.             print("嘿!小了~")
  12. print("游戏结束!不玩了~")
复制代码
发现还是有点小问题就是你只有输入正确答案才能结束。这好像跟我们的要求有点不一致了。
给点提示(使用and逻辑操作符)
我做了以下改变:
  1. guess = int(input("请输入一个数字:"))
  2. i = 1
  3. while guess != 8 and i < 3:
  4.     guess = int(input("猜错了~不妨再猜一次:"))
  5.     if guess == 8:
  6.         print("哇艹,你是小甲鱼肚子里的蛔虫吗?")
  7.         print("哼,猜对的也没有奖励!")
  8.     else:
  9.         if guess > 8:
  10.             print("哥。大了~")
  11.         else:
  12.             print("嘿!小了~")
  13.     i = i + 1
  14. print("游戏结束!不玩了~")
复制代码
这样我们只可以猜四次,如果还不正确就会强制结束游戏。

现在要做最后一次改进即每一次运行让答案变成随机的。
我们需要引入外援random模块
random module 里面有一个randint(),它会返回一个随机数。利用这个函数来改进我们的游戏吧?

  1. import random
  2. secret = random.randint(1,10)
  3. guess = int(input("请输入一个数字:"))
  4. i = 1
  5. while guess != secret and i <= 3:
  6.     guess = int(input("猜错了~不妨再猜一次:"))
  7.     if guess == secret:
  8.         print("哇艹,你是小甲鱼肚子里的蛔虫吗?")
  9.         print("哼,猜对的也没有奖励!")
  10.     else:
  11.         if guess > secret:
  12.             print("哥。大了~")
  13.         else:
  14.             print("嘿!小了~")
  15.     i = i + 1
  16. print("游戏结束!不玩了~")
复制代码

随着不停的测试发现,发现两个,当第一次输入正确答案的时候,并没有给出奖励的提示而是直接提示游戏结束;第一次猜错了也没有给出提示是大了还是小了。

课后作业整理:
0.Ctrl+C强制结束。
3.中间用分号隔开
4.使用反斜杠(\)或者圆括号
5.额这一点是真想不到。试验了一把的确是这么回事,当and前面的那个表达式为False时,返回后面那个表达式的结果,即返回3.有什么用呢?不知道。
6.短路逻辑就是对整个表达式已经知道了结果,后面的表达式也就没有计算的必要了。

动手:
0.第一个程序确实没有写出来但看了小甲鱼的代码收获也是巨大的。
做不到的是第一次没有输入正确,在第二次,第三次输入正确的时候会给出猜中的提示,但第一次正确输入的值guess直接通过while判断而不在进行while包含的语句块,也就无法给出猜中的提示。将第一次输入也放到while循环之中即可。对print的理解也就更深了一步。

  1. import random
  2. secret = random.randint(1,10)
  3. guess = 0
  4. print("不妨猜一猜小甲鱼心里想的是哪一个数字:", end = "JJ = ")
  5. times = 3
  6. while guess != secret and times > 0:
  7.     guess = int(input())
  8.     times = times - 1
  9.     if guess == secret:
  10.         print("哇艹,你是小甲鱼肚子里的蛔虫吗?")
  11.         print("哼,猜对的也没有奖励!")
  12.     else:
  13.         if guess > secret:
  14.             print("哥。大了~")
  15.         else:
  16.             print("嘿!小了~")
  17.         if times > 0:
  18.             print("哎!错了!再试试:", end = "JJ =  ")
  19.         else:
  20.             print("次数用完了。这都猜不中。你是想死嘞!!")
  21. print("游戏结束!不玩了~")
复制代码
1.
  1. temp = int(input("请输入一个整数:"))
  2. i = 1
  3. while temp:   
  4.     print(i)
  5.     i = i + 1
  6.     temp = temp - 1
复制代码

2.重点来了 :我要强势装一波(我的答案绝对比小甲鱼的要完美@小甲鱼 ):
  1. temp = int(input("请输入一个整数:"))
  2. while temp:
  3.     print(" " * temp, end = ("*" * temp + "\n"))
  4.     temp = temp - 1
复制代码





评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-7-14 13:07:28 | 显示全部楼层
没看懂你后面两张图,但是小甲鱼的教程后面有教你怎么改进这游戏的,骚年学习认真点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2017-7-14 13:12:09 | 显示全部楼层
你最后一张图,temp如果不是1呢,while就执行不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-14 14:32:03 | 显示全部楼层
老甲鱼与小甲鱼 发表于 2017-7-14 13:12
你最后一张图,temp如果不是1呢,while就执行不了

为什么这么说呢?temp只要不是0都可以执行while循环啊?还是我理解错你的意思了?你再说明白点?
snipaste_20170714_142445.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-14 14:36:23 | 显示全部楼层
six_mao 发表于 2017-7-14 14:32
为什么这么说呢?temp只要不是0都可以执行while循环啊?还是我理解错你的意思了?你再说明白点?

慢着,我搞错了,我一直以为while 1才能执行,原谅我的猪脑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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