鱼C论坛

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

python零基础入门 第四课

[复制链接]
发表于 2016-11-25 00:10:24 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 懒蜗牛 于 2016-11-29 21:32 编辑
  1. import random
  2. secret = random.randint(1,10)
  3. print('猜猜甲鱼哥几岁了')
  4. print('机会只有20次,购买正版鱼C教程后机会增加100次')
  5. i = 20
  6. while  i:
  7.     i-=1
  8.     if i<0:break
  9.     temp=input('请输入(1-100)岁数:')
  10.     guess=int(temp)
  11.     if guess == secret:
  12.         print('猜对了 真牛')
  13.         print('奖励请联系甲鱼哥')
  14.         break
  15.     elif guess <secret:
  16.         print('小了,再来一次')
  17.     elif guess >secret:
  18.         print('大了,再来一次')
  19.     else :
  20.         print('游戏结束了')
  21. print('good bey')
复制代码


else :
        print('游戏结束了')
这个代码不论是 大了 还是 小了 都没有显示过   求解!

if i<0:break
当猜测的次数用完后如何 提示次数已经用完或者显示游戏结束

  1. import random
  2. times=10
  3. secret=random.randint(1,10)
  4. print('*懒蜗牛出品*' * 3)
  5. print('======猜猜\'这里有几只"蜗牛'+'"======')
  6. guess=0
  7. while(guess !=secret)and(times>0):
  8.     temp=input('请输入1-100的数字:')
  9.     while not temp.isdigit():
  10.         print('抱歉,输入不合法' ,end='')
  11.         temp=input('请输入一个整数:')
  12.     guess=int(temp)      
  13.     times=times-1
  14.     if guess ==secret:
  15.         print('猜中了')
  16.         print('没奖励哦')
  17.     else:
  18.         if guess > secret:
  19.             print('大了')
  20.         else:
  21.             print('小了')
  22.         if times>0:
  23.             print('再来一次:',end='')
  24.         else:
  25.             print('机会用完了')
  26. print('游戏结束了')
复制代码



  重写了一遍代码   又画了个很渣的流程图
再次感谢二楼和四楼的朋友
QQ图片20161129213110.jpg

本帖被以下淘专辑推荐:

  • · 黑白|主题: 1, 订阅: 0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-25 12:03:47 | 显示全部楼层
我觉得问题是没有循环次数真假的定义,因此你执行20次后,没有 假 值判断是否跳出循环,print gameover,当然我还只接触语言一个礼拜,并不清楚对不对,希望后面大神能给出标准解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-25 18:36:38 | 显示全部楼层
在下班后解决了这个问题,好像这样就可以了!

import random
secret = random.randint(1,18)
print('猜猜刘宇几岁了')
print('机会只有20次,错过就输喽')
i = 20
while  i:
    i-=1
    if i<0:break
    temp=input('请输入(1-100)岁数:')
    guess=int(temp)
    if guess == secret:
        print('猜对了 真牛')
        print('祝刘宇小朋友永远'+str(temp)+'岁')
        break
    elif guess <secret:
        print('小了,再来一次')
    elif guess >secret:
        print('大了,再来一次')
print('游戏结束了')
print('good bey')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-26 01:48:20 | 显示全部楼层
  1. # 首先 感觉楼主的习惯很不好啊 如果以后让我帮你维护 我可能是不愿意的
  2. # 其次 建议楼主编写代码之前先试着画一画程序流程图 虽然会影响总体时间 但是我相信诸如算法类的问题应该都会减少
  3. import random
  4. secret = random.randint(1,100)
  5. # 随机数范围改为(1,100) 这是用户能看到你给出的指定范围
  6. print('猜猜甲鱼哥几岁了')
  7. print('机会只有20次,购买正版鱼C教程后机会增加100次')
  8. i = 20
  9. while  i:
  10. # while后表达式为True执行循环 最好是用户猜一次 机会减少一次 所以把 i = 1 -1 移到下面 这样能保证自己和他人读到while时不会绕晕
  11.     temp  = input('请输入(1-100)岁数:')
  12.     guess = int(temp)
  13.     i = i - 1
  14. # 这里用户猜一次 机会才会少一次
  15.     if guess == secret:
  16.         print('猜对了 真牛')
  17.         print('奖励请联系甲鱼哥')
  18.         break
  19. # 这里不难看出楼主之前应该接触过其他基础汇编语言或者说自己至少提前自学了break语句的用法
  20. # 但是 用python就是追求完美的过程 不论结果怎么样 过程美好 大家才会觉得舒服
  21.     elif guess < secret:
  22.         print('小了')
  23. # 这里去掉半句 如果前19次用户都没有猜出正确答案 第20次猜完 明明提示小了,再来一次 却又提示游戏结束了 用户就会不舒服
  24.     elif guess > secret:
  25.         print('大了')
  26. # 这里道理同上
  27.     if i == 0:
  28.         print('次数已用完')
  29. # 重点在这里
  30. # 楼主的原代码【while i: 和 if i < 0:break】
  31. # 首先 while后表达式为True执行while以下缩进内容 当 i = 0 时,也就是while 0: 已经跳出循环了 后面再用if判断就赘述了
  32. # 其次 猜一次减一次机会的算法好处在这里就体现出来了 直接判断i是否为0 提示用户次数已用完 然后跳出循环
  33. # 最后 这个break看得我是相当难受 因为while已经为你跳出循环了 这个break就显得多余了 直接删掉
  34. print('游戏结束了')
  35. # 建议楼主老老实实使用现学知识处理问题
  36. # 如果你知道如何使用条件分支语句并且自己写代码的思路很清晰 那么请无视上面一行
  37. print('good bye')
  38. # 最后的槽点来了 good bye
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-26 09:28:05 | 显示全部楼层

受教了!昨天还在想如果次数用完了这个问题!刚学程序的时候总也跳不出自己思维定势
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 00:15:22 | 显示全部楼层

多谢指点   看完后你的解释觉得对这个小游戏整体的思路清晰很多
刚接触编程   第一次写代码    完全没什么概念
像  break  是写的时候不知道那一段该怎么结束  直接去找度娘那抄回来的  见笑了!

嗯    完全是零基础  连英语也是

感谢
   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-27 01:19:11 | 显示全部楼层
懒蜗牛 发表于 2016-11-27 00:15
多谢指点   看完后你的解释觉得对这个小游戏整体的思路清晰很多
刚接触编程   第一次写代码    完全没什 ...

没关系的 万事开头难 贵在坚持
现在学习环境比以前好太多了 很多东西都是开源或者不收费的
希望楼主在学习汇编语言这条路上坚持下去 越走越远
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-27 01:21:22 | 显示全部楼层
薛定谔的狗 发表于 2016-11-26 09:28
受教了!昨天还在想如果次数用完了这个问题!刚学程序的时候总也跳不出自己思维定势

刚开始学习编程的时候我也一样 想追求逻辑思维的完美 经常会把自己绕进去
所以 养成好习惯非常重要
加油
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-16 18:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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