懒蜗牛 发表于 2016-11-25 00:10:24

python零基础入门 第四课

本帖最后由 懒蜗牛 于 2016-11-29 21:32 编辑

import random
secret = random.randint(1,10)
print('猜猜甲鱼哥几岁了')
print('机会只有20次,购买正版鱼C教程后机会增加100次')
i = 20
whilei:
    i-=1
    if i<0:break
    temp=input('请输入(1-100)岁数:')
    guess=int(temp)
    if guess == secret:
      print('猜对了 真牛')
      print('奖励请联系甲鱼哥')
      break
    elif guess <secret:
      print('小了,再来一次')
    elif guess >secret:
      print('大了,再来一次')
    else :
      print('游戏结束了')
print('good bey')


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

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

import random
times=10
secret=random.randint(1,10)
print('*懒蜗牛出品*' * 3)
print('======猜猜\'这里有几只"蜗牛'+'"======')
guess=0
while(guess !=secret)and(times>0):
    temp=input('请输入1-100的数字:')
    while not temp.isdigit():
      print('抱歉,输入不合法' ,end='')
      temp=input('请输入一个整数:')
    guess=int(temp)      
    times=times-1
    if guess ==secret:
      print('猜中了')
      print('没奖励哦')
    else:
      if guess > secret:
            print('大了')
      else:
            print('小了')
      if times>0:
            print('再来一次:',end='')
      else:
            print('机会用完了')
print('游戏结束了')



{:10_265:}重写了一遍代码   又画了个很渣的流程图
再次感谢二楼和四楼的朋友

薛定谔的狗 发表于 2016-11-25 12:03:47

我觉得问题是没有循环次数真假的定义,因此你执行20次后,没有 假 值判断是否跳出循环,print gameover,当然我还只接触语言一个礼拜,并不清楚对不对,希望后面大神能给出标准解答{:10_334:}

薛定谔的狗 发表于 2016-11-25 18:36:38

在下班后解决了这个问题,好像这样就可以了!

import random
secret = random.randint(1,18)
print('猜猜刘宇几岁了')
print('机会只有20次,错过就输喽')
i = 20
whilei:
    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')

smile猪不痴 发表于 2016-11-26 01:48:20

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

薛定谔的狗 发表于 2016-11-26 09:28:05

smile猪不痴 发表于 2016-11-26 01:48


受教了!昨天还在想如果次数用完了这个问题!刚学程序的时候总也跳不出自己思维定势

懒蜗牛 发表于 2016-11-27 00:15:22

smile猪不痴 发表于 2016-11-26 01:48


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

{:10_284:} 嗯    完全是零基础连英语也是

感谢
   

smile猪不痴 发表于 2016-11-27 01:19:11

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

没关系的 万事开头难 贵在坚持
现在学习环境比以前好太多了 很多东西都是开源或者不收费的
希望楼主在学习汇编语言这条路上坚持下去 越走越远

smile猪不痴 发表于 2016-11-27 01:21:22

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

刚开始学习编程的时候我也一样 想追求逻辑思维的完美 经常会把自己绕进去
所以 养成好习惯非常重要
加油
页: [1]
查看完整版本: python零基础入门 第四课