鱼C论坛

 找回密码
 立即注册
查看: 2597|回复: 9

[已解决]新人求助

[复制链接]
发表于 2021-2-6 16:13:57 | 显示全部楼层 |阅读模式
2鱼币
print('-----------ssss-----------')
import random
times=3
secret=random.randint(1,10)
temp=input('请问小甲鱼想的是哪个数字:',end'')
guess=int(temp)
guess=0
while (guess != secret)and(times>0)
    times=times-1
    if guess>secret:
        print('大了大了')
    else:
        print('小了小了')
    if times>0:
        print('再猜一次吧:',end'')
if guess==secret:
    print('小蛔虫')
print('游戏结束')

           为何不能运行?
最佳答案
2021-2-6 16:13:58
huangdongdong 发表于 2021-2-7 11:05
print('------------sss-----------')
import random
secret=random.randint(1,10)

可以可以

自己多多理解一下,要是没有其他问题,请给我一个最佳谢谢,码字不易

最佳答案

查看完整内容

可以可以 自己多多理解一下,要是没有其他问题,请给我一个最佳谢谢,码字不易
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-6 16:13:58 | 显示全部楼层    本楼为最佳答案   
huangdongdong 发表于 2021-2-7 11:05
print('------------sss-----------')
import random
secret=random.randint(1,10)

可以可以

自己多多理解一下,要是没有其他问题,请给我一个最佳谢谢,码字不易
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-6 16:36:19 | 显示全部楼层
本帖最后由 Twilight6 于 2021-2-6 16:38 编辑


input 函数没有 end 参数,而且给 end 参数赋值要带上 = 号

guess 被赋值为 int(temp) 时你又在之后重新将 guess 赋值为 0 导致前面代码无用功,应该把 guess = 0 删去

while 循环条件填写完毕后,要加上冒号,print 函数的 end 参数你也忘记加上 = 等号了


帮你粗略改了下代码,参考下吧:
print('-----------ssss-----------')
import random
times=3
secret=random.randint(1,10)
guess = 0
print('请问小甲鱼想的是哪个数字:',end='')
while (guess != secret) and (times>0):
    temp=input()
    guess=int(temp)
    if guess>secret:
        times = times-1
        print('大了大了')
    else:
        times = times - 1
        print('小了小了')
    if times > 0:
        print('再猜一次吧:',end = '')
if guess==secret:
    print('小蛔虫')
print('游戏结束')

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

使用道具 举报

发表于 2021-2-6 16:36:57 | 显示全部楼层
else里包括等于了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-6 16:50:03 | 显示全部楼层
帮你改了下

print('-----------ssss-----------')
import random
times=3
secret=random.randint(1,10)
while times:
    temp = input('请问小甲鱼想的是哪个数字:')
    guess = int(temp)
    if guess>secret:
        print('大了大了')
        print('再猜一次吧:', end='')
    elif guess<secret:
        print('小了小了')
        print('再猜一次吧:', end='')
    else:
        print('小蛔虫')
        print('游戏结束')
        break
    times -= 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-6 16:50:39 | 显示全部楼层
本帖最后由 Bailey_Kung 于 2021-2-6 16:54 编辑

1、第5行:input()函数调用格式错误,不需要第二个参数
     修正后:temp=input('请问小甲鱼想的是哪个数字:')
2、第8行:while语句没加冒号
3、第15行:print() 语句中第二个参数为 end=' '
微信图片_20210206165424.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-6 17:53:44 | 显示全部楼层
Bailey_Kung 发表于 2021-2-6 16:50
1、第5行:input()函数调用格式错误,不需要第二个参数
     修正后:temp=input('请问小甲鱼想的是哪个数 ...

print('-------------sss--------------')
import random
times=3
secret=random.randint(1,10)
temp=input('请问小甲鱼想的是那个数字:')
guess=int(temp)
while (guess!=secret)and(times>0):
    times=times-1
    if guess>secret:
        print('大了大了')
    else:
        print('小了小了')
    if times>0:
        print('请再输入一次:',end='')
if guess==secret:
    print('小蛔虫')
print('游戏结束')
运行后是这样:
-------------sss--------------
请问小甲鱼想的是那个数字:4
小了小了
请再输入一次:小了小了
请再输入一次:小了小了
游戏结束
这该如何改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-6 20:58:26 | 显示全部楼层
print('-------------sss--------------')
import random
times=3
guess=0
secret=random.randint(1,10)
temp=input('请问小甲鱼想的是那个数字:')
while (guess!=secret)and(times>0):
    times=times-1
    if guess==secret:
        print('小蛔虫')
    else:
        if guess>secret:
            print('大了大了')
        else:
            print('小了小了')
        if times>0:
            print('在输入一次:',end='')
        else:
            print('机会用光了')
            times=times-1
print('游戏结束')
怎么改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 00:08:58 | 显示全部楼层
huangdongdong 发表于 2021-2-6 20:58
print('-------------sss--------------')
import random
times=3

楼主先对照一下看看下面的代码和您的有什么区别
print('-------------sss--------------')
import random
times=3
secret=random.randint(1,10)

while times>0:
    temp = int(input('请问小甲鱼想的是那个数字:'))
    times=times-1
    if temp==secret:
        print('小蛔虫')
        break
    else:
        if temp>secret:
            print('大了大了')
        else:
            print('小了小了')
        if times == 0:
            print('机会用光了')
print('游戏结束')

如果楼主看完了,请仔细思考一下

从上到下来看,guess 是什么?你有没有发现 guess 从一开始定义,就从未发生过变化,永远是 0,所以用户永远不可能猜对

盲猜您是打算获取用户的猜测值,那么就可以用 secret 直接代替 temp,用 secret 接收用户输入

然后获取用户输入以后,不知道楼主有没有发现,您值获取了一次,input 在 while 的外面,那么用户输入就永远是最开始键入的那个值

并且,input 不论你输入的是什么,最后都是 str 类型,而并非楼主所期望的 int 类型,所以此处需要将用户输入强制转换成 int 类型

将 input 直接放在 while 内部能够解决问题,多次获取用户输入

您也可以放一个 input 在while 之前,while 末尾再 input 获取一次用户输入,但是这样挺麻烦的

楼主仔细观察就能发现,while 的条件似乎有点问题

当 temp != secret and times > 0 的时候才会执行 while

times > 0 固然没错,但是 temp != secret 这个一旦加上去的话,那么小蛔虫这句话就不会被打印了,即使猜对了,因为此时 temp == secret 不满足 while 循环条件

当 temp == secret 时,打印小蛔虫,然后 break 语句跳出 while 循环,即终止 while 循环

每次用户输入完成后, times 自动减少一次,当机会为 0 直接打印机会用光了,只有当 secret > 或 < temp 时才需要在意 times 用光了,而猜对时直接退出 while 循环了,并不需要管是否用光机会

请注意,times 减少一定要在判断 times 次数是否为 0 之前,否则可能会出现次数并非为代码指定的 3 次的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-7 11:05:26 | 显示全部楼层
Daniel_Zhang 发表于 2021-2-7 00:08
楼主先对照一下看看下面的代码和您的有什么区别

print('------------sss-----------')
import random
secret=random.randint(1,10)
times=3
temp=input('请输入数字:')
guess=int(temp)
while (guess != secret)and (times>0):
    times=times-1
    if guess>secret:
        print('大颗大颗')
    else:
        print('小了小了')
    if times>0:
        temp=input('请输入数字:')
        guess=int(temp)
    else:
        print('么了')
        break
if guess==secret:
    print('蛔虫')
print('游戏结束')
结果可以了,不知还要不要改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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