老笨啊 发表于 2017-7-28 06:22:31

关于while语句的用法

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

这个代码完全无法做到我的要求。。该怎么改进。。

Pythonista 发表于 2017-7-28 06:51:29

循环次数放在while 后面,while times:

新手·ing 发表于 2017-7-28 08:00:01

temp = input('请输入一个数字:')
times = 3
while 1:
    try:
      temp = int(temp)
      print(temp)
      break
    except ValueError:
      times -= 1
      temp = input('输入错误,请重新输入:')
    if times <= 0:
      break
   
print('输入完成')

新手·ing 发表于 2017-7-28 08:00:43

不一定一定要用while循环来判断,都无所谓吧

ba21 发表于 2017-7-28 09:55:59

temp = input('请输入一个数字:') #接收输入并转换成整形
times = 2 #允许输入数 加上上面一次总共3次
while times: #判断输入次数
    if temp.isdigit(): #是否为整型(字符串只有数字)
      print(temp)
      break#输入正确退出循环
    else:
      temp = input('输入错误,请重新输入:') #输入错误重新输入
    times -= 1
print('输入完成')

ooxx7788 发表于 2017-7-28 10:05:42

while判断times,不要去判断temp

老笨啊 发表于 2017-8-1 05:40:48

新手·ing 发表于 2017-7-28 08:00
不一定一定要用while循环来判断,都无所谓吧

只是单纯地想用下while,以便加深对while的理解。。

老笨啊 发表于 2017-8-1 05:42:12

ooxx7788 发表于 2017-7-28 10:05
while判断times,不要去判断temp

为什么不要去判断temp?while要判断什么,该怎么评定?

老笨啊 发表于 2017-8-1 05:54:04

ba21 发表于 2017-7-28 09:55


为什么else后面用temp,而不是用print? 是不是因为,print只是单纯输出字符串,而没有输入功能?所以才要用到input?
还有,这个代码貌似只针对输入错误,才有3次重新输入。而且,如果最后一次输入也是错误的,并不会提示输入错误,而是直接提示输入完成。同时,如果输入正确,就只能输入一次,然后直接跳出循环了。

老笨啊 发表于 2017-8-1 06:01:07

ba21 发表于 2017-7-28 09:55


请问下,第8行的代码中,我在input里面的字符串改成:'输入错误,请重新输入:',end='',只是增加了end='',却在输入错误时,被提示说:TypeError: input() takes no keyword arguments。
为什么啊?

ba21 发表于 2017-8-1 08:35:57

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

input 有 ,end=''的参数吗?这个我不知道

ooxx7788 发表于 2017-8-1 08:50:26

老笨啊 发表于 2017-8-1 05:42
为什么不要去判断temp?while要判断什么,该怎么评定?

你这里想用次数来觉得是不是要继续循环,当然应该是判断times更好。
这不是必须的,但是从想法上更合理。你想根据猜测几次来觉得是否继续程序,结果去判断某个变量是不是数字,这显然不合理啊。

老笨啊 发表于 2017-8-1 13:58:27

ba21 发表于 2017-8-1 08:35
input 有 ,end=''的参数吗?这个我不知道

end = '' 不是换行的意思么?

ba21 发表于 2017-8-1 19:08:37

老笨啊 发表于 2017-8-1 13:58
end = '' 不是换行的意思么?

input 没有end参数
http://www.runoob.com/python/python-func-input.html

老笨啊 发表于 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的参与么?

ba21 发表于 2017-8-2 09:15:08

老笨啊 发表于 2017-8-2 05:43
哦,那只有print才有end的参与么?

据我所知,是的

xianliqun 发表于 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('输入错误,您的机会已用完,未能完成输入并打印!')
                  
   
页: [1]
查看完整版本: 关于while语句的用法