鱼C论坛

 找回密码
 立即注册
查看: 2792|回复: 16

[已解决]关于while语句的用法

[复制链接]
发表于 2017-7-28 06:22:31 | 显示全部楼层 |阅读模式

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

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

x
对while语句的用法,一直还是没能理解。
我只知道while 后面所跟的变量为真时,则执行其下方的代码。可是这个语句如何终结?
比如我写了个代码:(目的是想输入一个数字,如果输入是数字,则直接打印,如果不是,则要求重新输入,允许次数为3次。
temp = input('请输入一个数字:')
times > 3
while temp.isdigit():  
    print(temp)
    times -= 1
    if times > 0
    print('输入错误,请重新输入:', end = '')
print('输入完成')

这个代码完全无法做到我的要求。。该怎么改进。。
最佳答案
2017-7-28 09:55:59
  1. temp = input('请输入一个数字:') #接收输入并转换成整形
  2. times = 2 #允许输入数 加上上面一次总共3次
  3. while times: #判断输入次数
  4.     if temp.isdigit(): #是否为整型(字符串只有数字)
  5.         print(temp)
  6.         break  #输入正确退出循环
  7.     else:
  8.         temp = input('输入错误,请重新输入:') #输入错误重新输入
  9.     times -= 1
  10. print('输入完成')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-28 06:51:29 | 显示全部楼层
循环次数放在while 后面,while times:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 08:00:01 | 显示全部楼层
  1. temp = input('请输入一个数字:')
  2. times = 3
  3. while 1:
  4.     try:
  5.         temp = int(temp)
  6.         print(temp)
  7.         break
  8.     except ValueError:
  9.         times -= 1
  10.         temp = input('输入错误,请重新输入:')
  11.     if times <= 0:
  12.         break
  13.    
  14. print('输入完成')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 08:00:43 | 显示全部楼层
不一定一定要用while循环来判断,都无所谓吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 09:55:59 | 显示全部楼层    本楼为最佳答案   
  1. temp = input('请输入一个数字:') #接收输入并转换成整形
  2. times = 2 #允许输入数 加上上面一次总共3次
  3. while times: #判断输入次数
  4.     if temp.isdigit(): #是否为整型(字符串只有数字)
  5.         print(temp)
  6.         break  #输入正确退出循环
  7.     else:
  8.         temp = input('输入错误,请重新输入:') #输入错误重新输入
  9.     times -= 1
  10. print('输入完成')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 10:05:42 | 显示全部楼层
while判断times,不要去判断temp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 05:40:48 | 显示全部楼层
新手·ing 发表于 2017-7-28 08:00
不一定一定要用while循环来判断,都无所谓吧

只是单纯地想用下while,以便加深对while的理解。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 05:42:12 | 显示全部楼层
ooxx7788 发表于 2017-7-28 10:05
while判断times,不要去判断temp

为什么不要去判断temp?  while要判断什么,该怎么评定?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 05:54:04 | 显示全部楼层

为什么else后面用temp,而不是用print? 是不是因为,print只是单纯输出字符串,而没有输入功能?所以才要用到input?
还有,这个代码貌似只针对输入错误,才有3次重新输入。而且,如果最后一次输入也是错误的,并不会提示输入错误,而是直接提示输入完成。同时,如果输入正确,就只能输入一次,然后直接跳出循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 06:01:07 | 显示全部楼层

请问下,第8行的代码中,我在input里面的字符串改成:'输入错误,请重新输入:',end='',只是增加了end='',却在输入错误时,被提示说:TypeError: input() takes no keyword arguments。
为什么啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-1 08:35:57 | 显示全部楼层
老笨啊 发表于 2017-8-1 06:01
请问下,第8行的代码中,我在input里面的字符串改成:'输入错误,请重新输入:',end='',只是增加了end=' ...

input 有 ,end=''的参数吗?这个我不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-1 08:50:26 | 显示全部楼层
老笨啊 发表于 2017-8-1 05:42
为什么不要去判断temp?  while要判断什么,该怎么评定?

你这里想用次数来觉得是不是要继续循环,当然应该是判断times更好。
这不是必须的,但是从想法上更合理。你想根据猜测几次来觉得是否继续程序,结果去判断某个变量是不是数字,这显然不合理啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 13:58:27 | 显示全部楼层
ba21 发表于 2017-8-1 08:35
input 有 ,end=''的参数吗?这个我不知道

end = '' 不是换行的意思么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-1 19:08:37 | 显示全部楼层
老笨啊 发表于 2017-8-1 13:58
end = '' 不是换行的意思么?

input 没有end参数
http://www.runoob.com/python/python-func-input.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-2 05:43:59 | 显示全部楼层
ba21 发表于 2017-8-1 19:08
input 没有end参数
http://www.runoob.com/python/python-func-input.html

哦,那只有print才有end的参与么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 09:15:08 | 显示全部楼层
老笨啊 发表于 2017-8-2 05:43
哦,那只有print才有end的参与么?

据我所知,是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 16:25:11 | 显示全部楼层
temp=input('请输入一个数字:')
times=2
while times:
    if temp.isdigit():
        print(temp)
        print('输入完成')
        break
    else:
        temp=input('输入错误,您还有2次机会,请重新输入:')
        
        
        if temp.isdigit():
            print(temp)
            print('输入完成')
            break
        else:
            temp=input('输入错误,您还有1次机会,请重新输入:')
            
                 
            if temp.isdigit():
                print(temp)
                print('输入完成')
                break
            else:
                times = 0
                print('输入错误,您的机会已用完,未能完成输入并打印!')
                    
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 11:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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