鱼C论坛

 找回密码
 立即注册
查看: 2392|回复: 5

[已解决]请大神修改一下

[复制链接]
发表于 2023-5-21 18:39:49 | 显示全部楼层 |阅读模式

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

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

x
请问大神 怎么修改才能在第一次输入一位数 第二次输入两位数的时候print ‘请输入0到10之间的数字!!!’ 和 ‘输入第二个数字: ’  (因为第一个数字输入的是对的)

for item in range(3):   
a=int(input('输入一个数字:'))
if a>0 and  a<10:
  b=int(input('输入第二个数字:'))
  if b>0 and  b<10:
       break
  else:
       print('请输入0到10之间的数字!!!')
else:
  print('请输入0到10之间的数字!')
最佳答案
2023-5-21 19:11:02
pyhello 发表于 2023-5-21 19:03
你好大神 我是想两次输入的都是一位数,现在的情况是第一次输入一位数 第二次输入两位数的时候,它会重新 ...

我明白你的需求了。对不起,我之前理解错了。你希望如果第一次输入的数字是正确的(即在0-10之间),而第二次输入的数字不正确时,只要求用户重新输入第二个数字,而不是两个数字都要重新输入。

下面是按照你的需求修改后的代码:

  1. for item in range(3):   
  2.     a=int(input('输入第一个数字:'))
  3.     if a>=0 and  a<10:
  4.         for _ in range(3):
  5.             b=int(input('输入第二个数字:'))
  6.             if b>=0 and  b<10:
  7.                 break
  8.             else:
  9.                 print('请输入0到10之间的数字!!!')
  10.         if b>=0 and  b<10:
  11.             break
  12.     else:
  13.         print('请输入0到10之间的数字!!!')
复制代码


在这段代码中,我在检查第一个数字是否正确后增加了一个新的循环来获取和检查第二个数字。如果第二个数字不正确,用户会被提示重新输入第二个数字,而不是两个数字都要重新输入。第二个数字正确后,两个循环都会结束。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-21 18:41:17 | 显示全部楼层
你的代码逻辑基本正确,不过有一些小错误。如果我理解你的需求正确,你希望用户先输入一个0到10之间的数字,然后再输入一个两位数。以下是修正后的代码:

  1. for item in range(3):   
  2.     a=int(input('输入一个数字:'))
  3.     if a>=0 and  a<10:
  4.         while True: # 这里我们用一个无限循环来确保用户输入一个两位数
  5.             b=int(input('输入第二个数字:'))
  6.             if b>=10 and  b<100:
  7.                 break
  8.             else:
  9.                 print('请输入10到99之间的数字!!!')
  10.         break # 如果两个数字都输入正确,我们就退出循环
  11.     else:
  12.         print('请输入0到10之间的数字!!!')
复制代码


这里的改动有两点:

1. 你的需求是要求用户输入一个0到10之间的数字,所以我们的条件应该是  a>=0  和  a<10 ,而不是  a>0  和  a<10 。同样的,对于两位数,我们应该检查  b>=10  和  b<100 。

2. 我们在要求用户输入两位数的时候使用了一个新的循环。这样,如果用户输入的不是两位数,我们会再次要求他们输入,直到他们输入正确。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-21 19:03:30 | 显示全部楼层
isdkz 发表于 2023-5-21 18:41
你的代码逻辑基本正确,不过有一些小错误。如果我理解你的需求正确,你希望用户先输入一个0到10之间的数字 ...

你好大神 我是想两次输入的都是一位数,现在的情况是第一次输入一位数 第二次输入两位数的时候,它会重新开始第一次输入,其实第一次输入是正确的,没必要再重新输入,所以能不能跳过第一次输入,进入第二次输入呢 谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-21 19:05:33 | 显示全部楼层
你可以在第二次输入之前添加一个条件判断,检查第一次输入的数是否在 [0, 10) 的范围内。如果不在该范围内,就提示用户再次输入,否则继续输入第二个数。修改后的代码如下:
  1. for item in range(3):
  2.     a = int(input('输入一个数字:'))
  3.     if a >= 0 and a < 10:
  4.         b = int(input('输入第二个数字:'))
  5.         if b >= 0 and b < 10:
  6.             break
  7.         else:
  8.             print('请输入0到10之间的数字!!!')
  9.     else:
  10.         print('请输入0到10之间的数字!')
  11.         print('输入第二个数字:')
复制代码

这里我们使用了两个条件分支,第一个是判断第一个数是否在 [0, 10) 的范围内,如果不在范围内就提示用户重新输入;第二个是判断第二个数是否在 [0, 10) 的范围内,如果不在范围内则提示用户重新输入。如果第一个数在 [0, 10) 的范围内,那么程序就会跳过第二个条件分支,直接执行 break 语句,退出循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-21 19:11:02 | 显示全部楼层    本楼为最佳答案   
pyhello 发表于 2023-5-21 19:03
你好大神 我是想两次输入的都是一位数,现在的情况是第一次输入一位数 第二次输入两位数的时候,它会重新 ...

我明白你的需求了。对不起,我之前理解错了。你希望如果第一次输入的数字是正确的(即在0-10之间),而第二次输入的数字不正确时,只要求用户重新输入第二个数字,而不是两个数字都要重新输入。

下面是按照你的需求修改后的代码:

  1. for item in range(3):   
  2.     a=int(input('输入第一个数字:'))
  3.     if a>=0 and  a<10:
  4.         for _ in range(3):
  5.             b=int(input('输入第二个数字:'))
  6.             if b>=0 and  b<10:
  7.                 break
  8.             else:
  9.                 print('请输入0到10之间的数字!!!')
  10.         if b>=0 and  b<10:
  11.             break
  12.     else:
  13.         print('请输入0到10之间的数字!!!')
复制代码


在这段代码中,我在检查第一个数字是否正确后增加了一个新的循环来获取和检查第二个数字。如果第二个数字不正确,用户会被提示重新输入第二个数字,而不是两个数字都要重新输入。第二个数字正确后,两个循环都会结束。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-21 19:19:10 | 显示全部楼层
isdkz 发表于 2023-5-21 19:11
我明白你的需求了。对不起,我之前理解错了。你希望如果第一次输入的数字是正确的(即在0-10之间),而第 ...

厉害了大神 厉害!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-24 01:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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