鱼C论坛

 找回密码
 立即注册
查看: 2341|回复: 7

[已解决]求助

[复制链接]
发表于 2023-7-7 20:16:29 | 显示全部楼层 |阅读模式

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

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

x
  1. [code]counts = 3
  2. import random
  3. anwser = random.randint(1,10)
  4. print("小甲鱼想的是什么数字:",end=" ")
  5. temp = input()
  6. # 这种想法是因为 type(1) 会返回 <class 'int'>,如果 type(temp) 返回结果一致说明输入是整数。
  7. while type(temp) != type(1):
  8.     print("抱歉,输入不合法,", end='')
  9.     temp = input("请输入一个整数:")
  10. while counts > 0:
  11.    temp = input()
  12.    guess = int(temp)
  13.    if guess == anwser:
  14.       print("你是小甲鱼肚子里的蛔虫吗")
  15.       print("答对了也没奖励")
  16.       break
  17.    else:
  18.       if guess < anwser:
  19.           print("你猜小了")
  20.       else:
  21.           print("你猜大了")
  22.       if counts > 0:
  23.          print("再试一次:",end="")
  24.       else:
  25.          print("机会用完了")
  26.       counts = counts -1
  27. print("游戏结束")
  28.    
复制代码
[/code]有大佬知道这个程序为啥一直跳不出第一个循环
最佳答案
2023-7-7 22:51:04
这个问题是因为 input() 函数在Python中默认获取的是字符串类型的数据,而 type(temp) != type(1) 这个条件是用来检查输入是否为整数类型,所以你的代码会一直停留在第一个循环。

一种解决方案是在接收输入时立即尝试将其转换为整数,并使用 try / except 结构来处理可能出现的错误。代码如下:

  1. counts = 3
  2. import random
  3. answer = random.randint(1,10)
  4. print("小甲鱼想的是什么数字:",end=" ")
  5. while True:
  6.     temp = input()
  7.     try:
  8.         temp = int(temp)  # 尝试将输入转换为整数
  9.         break  # 如果转换成功,就跳出循环
  10.     except ValueError:  # 如果转换失败,就打印错误信息,并继续循环
  11.         print("抱歉,输入不合法,", end='')
  12.         print("请输入一个整数:", end='')
  13. while counts > 0:
  14.    guess = temp
  15.    if guess == answer:
  16.       print("你是小甲鱼肚子里的蛔虫吗")
  17.       print("答对了也没奖励")
  18.       break
  19.    else:
  20.       if guess < answer:
  21.           print("你猜小了")
  22.       else:
  23.           print("你猜大了")
  24.       counts -= 1
  25.       if counts > 0:
  26.          print("再试一次:",end="")
  27.          while True:
  28.             temp = input()
  29.             try:
  30.                 temp = int(temp)  # 尝试将输入转换为整数
  31.                 break  # 如果转换成功,就跳出循环
  32.             except ValueError:  # 如果转换失败,就打印错误信息,并继续循环
  33.                 print("抱歉,输入不合法,", end='')
  34.                 print("请输入一个整数:", end='')
  35.       else:
  36.          print("机会用完了")
  37. print("游戏结束")
复制代码


以上代码首先检查输入的类型,如果输入不是整数,就会要求用户重新输入。然后在猜数字的过程中也加入了这个检查,确保用户在每次猜测时都输入的是整数。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 20:23:32 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-7-7 22:17 编辑

没有int,第9行
https://fishc.com.cn/forum.php?m ... 580&pid=6279297
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 20:23:46 | 显示全部楼层
本帖最后由 Ewan-Ahiouy 于 2023-7-7 20:27 编辑

因为input函数会返回字符串,type后返回class str,当然和chass int 不一样啦^_^

应将temp = input("请输入一个整数:")改为temp = int(input("请输入一个整数:"))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 20:28:11 | 显示全部楼层
[b]这个程序一直跳不出第一个循环的原因是输入的temp始终无法转换为整数类型,导致循环条件一直成立。可以尝试以下方法解决该问题:

1. 确保输入的是数字类型。你可以在输入前对用户输入进行验证,确保输入的是合法的整数。

  1. while True:
  2.     temp = input("请输入一个整数:")
  3.     if temp.isdigit():
  4.         break
  5.     else:
  6.         print("抱歉,输入不合法,请重新输入。")
复制代码

2. 另外,还需要注意循环的顺序。在第一个循环之后,应该将输入的temp转换为整数类型,而不是在循环的开始处使用它。

请根据上述建议修改程序,应该能够解决跳不出第一个循环的问题。

3.在第9行加上int:
  1. counts = 3
  2. import random
  3. anwser = random.randint(1,10)
  4. print("小甲鱼想的是什么数字:",end=" ")
  5. temp = input()
  6. # 这种想法是因为 type(1) 会返回 <class 'int'>,如果 type(temp) 返回结果一致说明输入是整数。
  7. while type(temp) != type(1):
  8.     print("抱歉,输入不合法,", end='')
  9.     temp = int(input("请输入一个整数:"))
  10. while counts > 0:
  11.    temp = input()
  12.    guess = int(temp)
  13.    if guess == anwser:
  14.       print("你是小甲鱼肚子里的蛔虫吗")
  15.       print("答对了也没奖励")
  16.       break
  17.    else:
  18.       if guess < anwser:
  19.           print("你猜小了")
  20.       else:
  21.           print("你猜大了")
  22.       if counts > 0:
  23.          print("再试一次:",end="")
  24.       else:
  25.          print("机会用完了")
  26.       counts = counts -1
  27. print("游戏结束")
  28.    
复制代码


求最佳答案
[/b]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 22:51:04 | 显示全部楼层    本楼为最佳答案   
这个问题是因为 input() 函数在Python中默认获取的是字符串类型的数据,而 type(temp) != type(1) 这个条件是用来检查输入是否为整数类型,所以你的代码会一直停留在第一个循环。

一种解决方案是在接收输入时立即尝试将其转换为整数,并使用 try / except 结构来处理可能出现的错误。代码如下:

  1. counts = 3
  2. import random
  3. answer = random.randint(1,10)
  4. print("小甲鱼想的是什么数字:",end=" ")
  5. while True:
  6.     temp = input()
  7.     try:
  8.         temp = int(temp)  # 尝试将输入转换为整数
  9.         break  # 如果转换成功,就跳出循环
  10.     except ValueError:  # 如果转换失败,就打印错误信息,并继续循环
  11.         print("抱歉,输入不合法,", end='')
  12.         print("请输入一个整数:", end='')
  13. while counts > 0:
  14.    guess = temp
  15.    if guess == answer:
  16.       print("你是小甲鱼肚子里的蛔虫吗")
  17.       print("答对了也没奖励")
  18.       break
  19.    else:
  20.       if guess < answer:
  21.           print("你猜小了")
  22.       else:
  23.           print("你猜大了")
  24.       counts -= 1
  25.       if counts > 0:
  26.          print("再试一次:",end="")
  27.          while True:
  28.             temp = input()
  29.             try:
  30.                 temp = int(temp)  # 尝试将输入转换为整数
  31.                 break  # 如果转换成功,就跳出循环
  32.             except ValueError:  # 如果转换失败,就打印错误信息,并继续循环
  33.                 print("抱歉,输入不合法,", end='')
  34.                 print("请输入一个整数:", end='')
  35.       else:
  36.          print("机会用完了")
  37. print("游戏结束")
复制代码


以上代码首先检查输入的类型,如果输入不是整数,就会要求用户重新输入。然后在猜数字的过程中也加入了这个检查,确保用户在每次猜测时都输入的是整数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-7-8 13:27:24 | 显示全部楼层
isdkz 发表于 2023-7-7 22:51
这个问题是因为 input() 函数在Python中默认获取的是字符串类型的数据,而 type(temp) != type(1) 这个条件 ...

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

使用道具 举报

发表于 2023-7-8 13:32:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-8 13:35:37 | 显示全部楼层


,我快赶不上陶远航了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 22:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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