鱼C论坛

 找回密码
 立即注册
查看: 1021|回复: 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
帮你修改了一下。
你应该还没有学到异常处理,现在用字符串的函数处理输入错误的情况。
后面学到了异常处理就有其他方法了
import random
secret=random.randint(1,10)
print("**********小甲鱼的作业*************")
promt="你猜猜我心里想的1~10中的哪个数字:"
i=3
while i:
    temp =input (promt)
    i-=1
    promt="还有%d次机会,你再猜一次:"%i
    while(not temp.isnumeric()):
        temp=input("输入错误,请输入一个整数!")
    guess = int (temp)
    if guess > secret:
            print("大了,猜大了")
    elif guess< secret:
            print("小了,猜小了")
    if guess == secret:
        print ("猜对了,你真是我肚里的蛔虫啊!")
        print ("猜中也没什么奖励了")
        break
else:
    print("你的机会用光了!")
print("游戏结束,不玩啦^_^")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

1,写个while循环,再设置一个times,设为你要循环的次数,然后while times,再在答错的地方设置一个times -= 1.
2,不知道你学没学字符串方法,可以这样:
while not temp.isdigit():
    temp = input("输入错误,请重试:")
把这个放在temp = input()的后面,guess = int(temp)的前面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 14:27:42 | 显示全部楼层    本楼为最佳答案   
帮你修改了一下。
你应该还没有学到异常处理,现在用字符串的函数处理输入错误的情况。
后面学到了异常处理就有其他方法了
import random
secret=random.randint(1,10)
print("**********小甲鱼的作业*************")
promt="你猜猜我心里想的1~10中的哪个数字:"
i=3
while i:
    temp =input (promt)
    i-=1
    promt="还有%d次机会,你再猜一次:"%i
    while(not temp.isnumeric()):
        temp=input("输入错误,请输入一个整数!")
    guess = int (temp)
    if guess > secret:
            print("大了,猜大了")
    elif guess< secret:
            print("小了,猜小了")
    if guess == secret:
        print ("猜对了,你真是我肚里的蛔虫啊!")
        print ("猜中也没什么奖励了")
        break
else:
    print("你的机会用光了!")
print("游戏结束,不玩啦^_^")
想知道小甲鱼最近在做啥?请访问 -> 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, 你们是怎么做到的,再回复里边是那种可以复制的代码形式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

1.那你就把那个判断写到判断次数里面去
2,回复那里有一个<>,看到了吗
把代码粘贴进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,我再比较下,感谢你的指导。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

同样零基础的同学,查阅了百度,自己捣鼓了下,分2部分实现了功能,但是觉得还可以更加简化
print()是为了实现 input()函数后不能空行的问题
最后的input()实现程序运行完后不会立即闪退的问题
还请指教
print('---------------无聊的小游戏-----------------')
import random                              #导入random模块
secret = random.randint(1,10)              #Random模块中随机整数,取值1到10
times = 2
temp = input("猜猜我心里想的数字1到10哦:")
print()
guess = int(temp)
if guess == secret:
        print("答对啦!真聪明!\n")
else:
    if guess > secret:
        print("大了大了\n")
    else:
        print("小了小了\n")
    print("还有",times,"次机会\n")
    
    
    while (guess !=secret) and (times > 0):
        temp = input("再给你一次机会哦:")
        print()
        guess = int(temp)
        if guess == secret:
            print("答对啦!答对啦!真聪明!\n")
        else:
            if guess > secret:
                print("大了大了\n")
            else:
                print("小了小了\n")
                times = times - 1
        if times == 0:
                print('你的机会用完啦!\n')
            
print("游戏结束\n")
input("按任意键退出...")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

请重新开一个帖子吧。我也是需要最佳答案的数量的。
而且重新开贴,集思广益,或许你能得到更好的答案呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 10:11:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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