鱼C论坛

 找回密码
 立即注册
查看: 2320|回复: 12

Python菜鸟求助,这个代码哪里错了?

[复制链接]
发表于 2020-2-13 10:37:26 | 显示全部楼层 |阅读模式

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

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

x
我在看零基础学习python,刚到P10.

本来想蹦跶下,结果直接被打脸,求问这个程序怎么优化。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import random
secret = random.randint(1,10)
print("-------------我爱鱼C工作室--------------")   
temp = input ("不妨猜一下小鱼现在心里想的哪个数字:")
guess = temp
if isinstance(guess, int):
    guess = int(temp)
    while guess != secret:
            if guess > secret:
                print ("哥,大了,大了~~")
                temp = input ("哎呀,错了,请重新输入吧:")
                guess = int(temp)
            if guess < secret:
                print ("嘿,小了,小了!!")
                temp = input ("哎呀,错了,请重新输入吧:")
                guess = int(temp)
            else:
                print ("我擦,你是小鱼心里的蛔虫么?!")
                print ("哼,猜中了也没有奖励!")
else:
    print ("数据类型错误,请输入1—10的整数:")
    print ("你是坏人,不和你玩了")
print ("游戏结束了,不玩了:)")
------------------------------------------------------------------------------------------------------------
谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-13 10:46:24 | 显示全部楼层
input得到是字符串。所以isinstance(guess, int)永远为假
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 10:47:04 | 显示全部楼层
建议用异常检测,input得到的是字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 11:04:01 | 显示全部楼层
有两个问题我不清楚楼主本意:
猜错了直接游戏结束吗?还是让用户重新输入?
没有次数限制?一直猜吗?
以下这个代码至少是可以运行正常的 稍稍优化了一下下

  1. import random
  2. secret = random.randint(1,10)
  3. print("-------------我爱鱼C工作室--------------")   
  4. guess = int(input ("不妨猜一下小鱼现在心里想的哪个数字:"))

  5. while guess in range(11): #没有次数限制?
  6.     if guess != secret:
  7.         if guess > secret:
  8.             print ("哥,大了,大了~~")
  9.         else:
  10.             print ("嘿,小了,小了!!")
  11.         guess = int(input ("哎呀,错了,请重新输入吧:"))        
  12.     else:
  13.         print ("我擦,你是小鱼心里的蛔虫么?!")
  14.         print ("哼,猜中了也没有奖励!")
  15.         break
  16. else:
  17.     print ("数据类型错误,请输入1—10的整数") #直接结束?
  18.     print ("你是坏人,不和你玩了")

  19. print ("游戏结束了,不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 11:27:30 | 显示全部楼层
Judie 发表于 2020-2-13 11:04
有两个问题我不清楚楼主本意:
猜错了直接游戏结束吗?还是让用户重新输入?
没有次数限制?一直猜吗?

谢谢回复:-)
是猜错了让用户重新输入,同时提示数据错误
还有就是没有次数限制。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 11:29:44 | 显示全部楼层
flag2020 发表于 2020-2-12 22:27
谢谢回复:-)
是猜错了让用户重新输入,同时提示数据错误
还有就是没有次数限制。

那 “你是坏人 不和你玩了” 的意思是?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 11:55:08 | 显示全部楼层
Judie 发表于 2020-2-13 11:29
那 “你是坏人 不和你玩了” 的意思是?

可以拿掉的~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 12:27:27 From FishC Mobile | 显示全部楼层
  我觉得在 print ("哼,猜中了也没有奖励!")后应该有break吧,这样猜对了才会停下?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2020-2-13 12:41:30 | 显示全部楼层
  1. import random
  2. secret = random.randint(1,10)
  3. print("-------------我爱鱼C工作室--------------")   
  4. guess = int(input ("不妨猜一下小鱼现在心里想的哪个数字:"))
  5. counter = 1

  6. while counter:
  7.     while guess in range(11): #没有次数限制?还真没有
  8.         if guess != secret:
  9.             if guess > secret:
  10.                 print ("哥,大了,大了~~")
  11.             else:
  12.                 print ("嘿,小了,小了!!")
  13.             guess = int(input ("哎呀,错了,请重新输入吧:"))        
  14.         else:
  15.             print ("我擦,你是小鱼心里的蛔虫么?!")
  16.             print ("哼,猜中了也没有奖励!")
  17.             counter = 0
  18.             break
  19.     else:
  20.         guess = int(input("数据类型错误,请输入1—10的整数:")) #直接结束?不

  21. print ("游戏结束了,不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 12:53:23 | 显示全部楼层
  1. import random
  2. secret = random.randint(1,10)
  3. print("-------------我爱鱼C工作室--------------")   
  4. guess = input ("不妨猜一下小鱼现在心里想的哪个数字:")
  5. flag = 1

  6. while flag:
  7.     if flag == 1:
  8.         if guess.isnumeric() == True:
  9.             guess = int(guess)
  10.             flag = 2
  11.         else:
  12.             guess = input ("数据类型错误,请输入1—10的整数:")
  13.         
  14.     if flag == 2:
  15.         if guess in range(1,11):
  16.             flag = 3
  17.         else:
  18.             guess = input ("数据类型错误,请输入1—10的整数:")
  19.             flag = 1

  20.     if flag == 3:
  21.         if guess != secret:
  22.                 if guess > secret:
  23.                     print ("哥,大了,大了~~")
  24.                 else:
  25.                     print ("嘿,小了,小了!!")
  26.                 guess = input ("哎呀,错了,请重新输入吧:")
  27.                 flag = 1
  28.         else:
  29.             print ("我擦,你是小鱼心里的蛔虫么?!")
  30.             print ("哼,猜中了也没有奖励!")
  31.             flag = 0
  32.   
  33. print ("游戏结束了,不玩了")

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

使用道具 举报

发表于 2020-2-18 10:00:54 | 显示全部楼层
我是这么写的:
import random
times = 4
error = 3
secret = random.randint(1,10)
print('------------------安氏复联集团出品------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字(1-10):", end=" ")
while (guess != secret) and (times > 0):
    temp = input()
    if temp.isdigit():
        guess = int(temp)
        if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
        else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            if (times == 0) and (error == 0):
                print("机会用光咯T_T")
    else:
        if error  != 0:
            print("抱歉,您的输入有误,请输入一个整数:", end='')
            error  = error - 1
    times = times - 1 # 用户每输入一次,可用机会就-1
print("游戏结束,不玩啦^_^")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 10:13:11 | 显示全部楼层
你那代码有问题,如果直接输对什么都不会显示,然后把第一个if前再加一个if guess == secret:想加次数限制照着我的写就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 10:19:46 | 显示全部楼层
我这个程序是课后作业但我改过
如果不加入我那个error变量,机会用完还不输入数字就会;
输入错误,请重新输入:机会用光了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-15 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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