鱼C论坛

 找回密码
 立即注册
查看: 1252|回复: 10

[已解决]关于0基础学python系列第四课的一些拓展问题

[复制链接]
发表于 2020-4-28 14:09:19 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 qiuyouzhi 于 2020-4-28 14:11 编辑

200%编程菜鸟一支,求指导,直接上源程序:
import random
secret=random.randint(1,10)
print("**********小甲鱼的作业*************")
temp=input("你猜猜我心里想的1~10中的哪个数字:")
guess = int (temp)
if guess > secret:
    print("大了,猜大了"+"\n")
elif guess< secret:
    print("小了,猜小了"+"\n")
while guess != secret:
    temp =input ("你再猜一次:")
    guess = int (temp)
    if guess > secret:
            print("大了,猜大了"+"\n")
    elif guess< secret:
            print("小了,猜小了"+"\n")
    if guess == secret:
        print ("猜对了,你真是我肚里的蛔虫啊!")
        print ("猜中也没什么奖励了")  
        print("游戏结束,不玩啦^_^")

这是第四课的内容,但是做两个功能扩展时有问题,请高手指导:
1. 限定猜错的次数,比如最多错3次就不能猜了。
2. 如何判断输入值,比如说,不小心输入了个w,那么程序需要提示说请输入1~10的数字。使程序有更好的容错能力。这个能力不但在第一次输入时有,在后边重复输入时也要有。

请不吝赐教!
最佳答案
2020-4-28 14:27:42
帮你修改了一下。
你应该还没有学到异常处理,现在用字符串的函数处理输入错误的情况。
后面学到了异常处理就有其他方法了
  1. import random
  2. secret=random.randint(1,10)
  3. print("**********小甲鱼的作业*************")
  4. promt="你猜猜我心里想的1~10中的哪个数字:"
  5. i=3
  6. while i:
  7.     temp =input (promt)
  8.     i-=1
  9.     promt="还有%d次机会,你再猜一次:"%i
  10.     while(not temp.isnumeric()):
  11.         temp=input("输入错误,请输入一个整数!")
  12.     guess = int (temp)
  13.     if guess > secret:
  14.             print("大了,猜大了")
  15.     elif guess< secret:
  16.             print("小了,猜小了")
  17.     if guess == secret:
  18.         print ("猜对了,你真是我肚里的蛔虫啊!")
  19.         print ("猜中也没什么奖励了")
  20.         break
  21. else:
  22.     print("你的机会用光了!")
  23. print("游戏结束,不玩啦^_^")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-28 14:11:01 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-4-28 14:13 编辑

1,写个while循环,再设置一个times,设为你要循环的次数,然后while times,再在答错的地方设置一个times -= 1.
2,不知道你学没学字符串方法,可以这样:
  1. while not temp.isdigit():
  2.     temp = input("输入错误,请重试:")
复制代码

把这个放在temp = input()的后面,guess = int(temp)的前面。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 14:27:42 | 显示全部楼层    本楼为最佳答案   
帮你修改了一下。
你应该还没有学到异常处理,现在用字符串的函数处理输入错误的情况。
后面学到了异常处理就有其他方法了
  1. import random
  2. secret=random.randint(1,10)
  3. print("**********小甲鱼的作业*************")
  4. promt="你猜猜我心里想的1~10中的哪个数字:"
  5. i=3
  6. while i:
  7.     temp =input (promt)
  8.     i-=1
  9.     promt="还有%d次机会,你再猜一次:"%i
  10.     while(not temp.isnumeric()):
  11.         temp=input("输入错误,请输入一个整数!")
  12.     guess = int (temp)
  13.     if guess > secret:
  14.             print("大了,猜大了")
  15.     elif guess< secret:
  16.             print("小了,猜小了")
  17.     if guess == secret:
  18.         print ("猜对了,你真是我肚里的蛔虫啊!")
  19.         print ("猜中也没什么奖励了")
  20.         break
  21. else:
  22.     print("你的机会用光了!")
  23. print("游戏结束,不玩啦^_^")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 14:33:57 | 显示全部楼层
qiuyouzhi 发表于 2020-4-28 14:11
1,写个while循环,再设置一个times,设为你要循环的次数,然后while times,再在答错的地方设置一个times  ...

高人,那个while语句进去有bug:
1. 如果再重猜的过程中,再输入w 就会报错。但是一开始输入错,可以有效的防错。

2, 你们是怎么做到的,再回复里边是那种可以复制的代码形式。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 14:35:24 | 显示全部楼层
笨虫学爬虫 发表于 2020-4-28 14:33
高人,那个while语句进去有bug:
1. 如果再重猜的过程中,再输入w 就会报错。但是一开始输入错,可以有 ...

1.那你就把那个判断写到判断次数里面去
2,回复那里有一个<>,看到了吗
把代码粘贴进去
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 15:06:23 | 显示全部楼层
qiuyouzhi 发表于 2020-4-28 14:35
1.那你就把那个判断写到判断次数里面去
2,回复那里有一个,看到了吗
把代码粘贴进去

好的,我再比较下,感谢你的指导。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 17:09:55 | 显示全部楼层
本帖最后由 junneverlose 于 2020-4-28 17:20 编辑

同样零基础的同学,查阅了百度,自己捣鼓了下,分2部分实现了功能,但是觉得还可以更加简化
print()是为了实现 input()函数后不能空行的问题
最后的input()实现程序运行完后不会立即闪退的问题
还请指教

  1. print('---------------无聊的小游戏-----------------')
  2. import random                              #导入random模块
  3. secret = random.randint(1,10)              #Random模块中随机整数,取值1到10
  4. times = 2
  5. temp = input("猜猜我心里想的数字1到10哦:")
  6. print()
  7. guess = int(temp)
  8. if guess == secret:
  9.         print("答对啦!真聪明!\n")
  10. else:
  11.     if guess > secret:
  12.         print("大了大了\n")
  13.     else:
  14.         print("小了小了\n")
  15.     print("还有",times,"次机会\n")
  16.    
  17.    
  18.     while (guess !=secret) and (times > 0):
  19.         temp = input("再给你一次机会哦:")
  20.         print()
  21.         guess = int(temp)
  22.         if guess == secret:
  23.             print("答对啦!答对啦!真聪明!\n")
  24.         else:
  25.             if guess > secret:
  26.                 print("大了大了\n")
  27.             else:
  28.                 print("小了小了\n")
  29.                 times = times - 1
  30.         if times == 0:
  31.                 print('你的机会用完啦!\n')
  32.             
  33. print("游戏结束\n")
  34. input("按任意键退出...")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 21:21:46 | 显示全部楼层
junneverlose 发表于 2020-4-28 17:09
同样零基础的同学,查阅了百度,自己捣鼓了下,分2部分实现了功能,但是觉得还可以更加简化
print()是为 ...

那你很厉害了,你这个能实现限制次数,但是错误的数据类型不能防止,你看看我推荐的那个答案。那哥们做的很好。你times=times-1 ,实际就是他那个i -=1, 而且还可以提示你还能答几次。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 11:35:13 | 显示全部楼层
sunrise085 发表于 2020-4-28 14:27
帮你修改了一下。
你应该还没有学到异常处理,现在用字符串的函数处理输入错误的情况。
后面学到了异常处 ...

你好,前段时间你解决了我的一个问题,现在有一些进一步的问题,还请你指导。谢谢!
程序如下,现在出现的问题是,我想让程序判断输入的数字,如果输入的数大于10,提示让重新输入。但是我写的程序有一个问题:如果先输入大于10的数,然后再输入了字符等非数字信息,程序会报错。请帮忙看看如何解决。非常感谢。
  1. import random
  2. secret=random.randint(1,10)
  3. print("**********小甲鱼的作业*************")
  4. i=3
  5. prompt ="你猜猜小甲鱼心里想的1~10中的哪个数字,你有%d次机会:"%i
  6. while i:
  7.     temp =input (prompt)
  8.     i-=1
  9.     prompt="还有%d次机会,你再猜一次:"%i
  10.     while(not temp.isnumeric()):
  11.         temp=input("输入错误,请输入一个1~10的数字!")
  12.     while(int(temp) > 10):
  13.         temp=input("输入错误,请输入一个1~10的数字!")
  14.     guess = int (temp)
  15.     if guess > secret:
  16.             print("大了,猜大了")
  17.     elif guess< secret:
  18.             print("小了,猜小了")
  19.     if guess == secret:
  20.         print ("猜对了,你真是小甲鱼肚里的蛔虫啊!")
  21.         print ("猜中也没什么奖励了")
  22.         break
  23. else:
  24.     print("你的机会用光了!")
  25. print("游戏结束,不玩啦^_^")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 12:25:49 | 显示全部楼层
笨虫学爬虫 发表于 2020-5-7 11:35
你好,前段时间你解决了我的一个问题,现在有一些进一步的问题,还请你指导。谢谢!
程序如下,现在出现 ...

请重新开一个帖子吧。我也是需要最佳答案的数量的。
而且重新开贴,集思广益,或许你能得到更好的答案呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 10:11:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 17:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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