鱼C论坛

 找回密码
 立即注册
查看: 1426|回复: 18

[已解决]自学求助关于while

[复制链接]
发表于 2018-5-6 21:26:58 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 fineconey 于 2018-5-6 21:28 编辑

最近自学[python],刚刚开始,纯粹小白,现在遇到一个问题.

我想实现这样一个结果[输入任意数字,只有是99的时候才结束]

写了如下代码,找不到错误的地方.
  1. number =input(" 输入任意数字:")

  2. while number !="99":
  3.    
  4.     number=input()
  5.     print("输入错误,请重新输入")
  6. print("结束")
复制代码



哪里出问题了呢?
最佳答案
2018-5-7 08:42:17
target = int(input('Enter target here '))

while True:
        num = int(input('Enter number here '))
        if num != target:
                print('SHIT')
        else:
                print('BINGO')
                break
print('YOU WIN!')
------------------------------------------------
改成这样吧。你上面的代码【逻辑错误】在于【每次input后都要print一条输错提示,即使你输入的num==tgt,这就比较尴尬了。】
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-6 21:44:48 From FishC Mobile | 显示全部楼层
错误提示呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2018-5-6 21:48:20 | 显示全部楼层
number = input(" 输入任意数字:")

while number != "99":
    number = input(" 输入任意数字:")
    print("输入错误,请重新输入")
print("结束")
这样不就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-5-6 22:14:41 | 显示全部楼层
蜗牛871 发表于 2018-5-6 21:48
number = input(" 输入任意数字:")

while number != "99":

谢谢,你这样更简单,但我还是不知道我哪里错了.囧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-6 22:21:15 | 显示全部楼层

没有提示,囧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-6 22:27:56 | 显示全部楼层
  1. number = input(" 输入任意数字:")
  2. while number != "99":
  3.     print("输入错误,请重新输入")
  4.     number = input(" 输入任意数字:")
  5. print("结束")
复制代码


不知道LL是不是这个意思,直到输入了99才退出循环,如果是的话,按照原来的代码,要输入两次才会有提示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 00:15:32 | 显示全部楼层
number=0
while number !="99":
number =input(" 输入任意数字:")

   
    number=input()
    print("输入错误,请重新输入")
print("结束")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 00:21:03 | 显示全部楼层
haha =input(" 输入任意数字:")
楼主原来的代码应该有两个问题,一是第一次输入后按一次回车会换行,再按一次才可以出提示。二是输入了99程序也不结束。我想可能是两个数据类型不一样的原因(没有把它定义为整型?)。所以作了修改,是管用的,但是原理还是不太理解。在我下面这个代码上,我又试了试把while number != 99  修改为  while number != "99"   ,然后又不能正常结束了,说明 99(整型)和"99"(字符串是不同的)
number = int(haha)
while number != 99 :
    haha=input("错了,请重新输入")
    number = int(haha)
print("结束")


是不是不定义数据的时候默认是字符串啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 00:26:14 | 显示全部楼层
为什么打了这么大一段话都没有了
我认为LL的程序有两个问题,1、第一次输入要按两次回车才可以出提示,2、即使输入99也没有结束。
觉得问题应该是因为数据类型不同(字符串和整型)所以作了修改(PS:"99"和99应该不相等)
  1. haha =input(" 输入任意数字:")
  2. number = int(haha)
  3. while number != 99 :
  4.     haha=input("错了,请重新输入")
  5.     number = int(haha)
  6. print("结束")
复制代码



是不是不作定义的时候默认所有的数据都是字符串?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 08:08:32 From FishC Mobile | 显示全部楼层
fineconey 发表于 2018-5-6 22:21
没有提示,囧

应该是在等待你的输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2018-5-7 08:42:17 | 显示全部楼层    本楼为最佳答案   
target = int(input('Enter target here '))

while True:
        num = int(input('Enter number here '))
        if num != target:
                print('SHIT')
        else:
                print('BINGO')
                break
print('YOU WIN!')
------------------------------------------------
改成这样吧。你上面的代码【逻辑错误】在于【每次input后都要print一条输错提示,即使你输入的num==tgt,这就比较尴尬了。】
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 09:11:17 | 显示全部楼层
number=input()
print("输入错误,请重新输入")

把这两句对调一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 09:27:14 | 显示全部楼层
应该是的,如果不转换,都是字符串吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 09:50:07 | 显示全部楼层
本帖最后由 huanan 于 2018-5-7 10:04 编辑

你第一行的等号后面没有空格,然后应该在while上面添加一行number = int(number),然后把重新输入那一行改到number = input()上面一行就行了,第一个改动没有也行,但我现在发现第二个改动没有也行那就应该是顺序问题了。我刚刚回去重新弄了一下,发现顺序错了只是会造成一些不好看的错误罢了,与程序无法运行没有任何关系,那应该就只有中英文或者空格什么的小问题了,我按照你的程序运行了一次没有任何运行错误
  1. number = input("请输入任意数字:")
  2. while number != "99":
  3.     number = input()
  4.     print("请重新输入")
  5. print("结束")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 11:51:11 | 显示全部楼层
hi  你的第四行代码少输入了 一个 ':'  ,' print("输入错误,请重新输入")',建议修改为' print("输入错误,请重新输入:") '

准确来说,你的代码并不是出错了,只是一直在等待你的输入
  1. number =input(" 输入任意数字:")

  2. while number !="99":
  3.    
  4.     #number=input()
  5.     #print("输入错误,请重新输入")
  6.     number =input(" 输入错误,请重新输入:")
  7. print("结束")
复制代码

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

使用道具 举报

发表于 2018-5-7 11:53:38 | 显示全部楼层
另外,需要提醒楼主,input()函数 输入的仅是字符型,并非整型,如果需要整型,请通过int()函数转换,比如:int(input('请输入整数:'))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 12:39:27 | 显示全部楼层
thexiosi 发表于 2018-5-7 11:51
hi  你的第四行代码少输入了 一个 ':'  ,' print("输入错误,请重新输入")',建议修改为' print("输入错误 ...

有点不明白,请问为什么即使输入了正确数字它依然会先显示“输入错误,请重新输入“再结束呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 12:59:57 | 显示全部楼层
hi 原因如下,注意楼主的代码顺序:一旦进入while循环, 先进行 input()输入、再打印print()、最后才进行while循环判定,这种情况下,即使输入正确,也会打印"输入错误,请重新输入" #请参考代码执行情况

number =input(" 输入任意数字:")
while number !="99":
    number=input()
    print("输入错误,请重新输入")

=================== RESTART:
输入任意数字:5
99
输入错误,请重新输入
结束
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 13:11:51 | 显示全部楼层
这样改:把print注释掉,汉字移到input。同时小白,不知道你出现啥问题?
number =input(" 输入任意数字:")

while number !="99":
   
    number=input("输入错误,请重新输入:")
    #print("输入错误,请重新输入")
print("结束")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-30 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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