循环 - 输入要列出的数字,不允许字母输入,按Enter键突破...?

时间:2016-01-22 17:06:18

标签: python python-2.7

整天都在这里,并且完全没有进步,它肯定应该非常简单,但我是Python的新手。谷歌没有提高太多,所以这是我的最后一招!

它应该是手动将数值放入列表的一些基本代码。如果我在脚本中添加一条“print”行,我可以看到随着时间的推移成功输入了值,但是我似乎无法通过将输入留空来添加正确的脚本来打破循环。目前,如果我设置任何东西使其中断,脚本似乎在它运行时冻结,我必须完全重置控制台。

另外我想知道有没有办法确保输入始终是整数?如果用户输入任何非数字的东西,最好让事情变得更清洁,并提出错误信息。

这是代码。

public virtual TEntity Find(params object[] keyValues)
{
   return _db.Set<TEntity>().Find(keyValues);
}

谢谢!

3 个答案:

答案 0 :(得分:4)

您只能使用

限制为数字
if a.isdigit():

所以你的功能看起来像

def accept_inputs():
    values = []
    while True:     
        a = raw_input('Enter numeric values. Leave blank to stop: ')
        if a.isdigit():
            values.append(float(a))
        if not a:
            return values

测试

>>> accept_inputs()
Enter numeric values. Leave blank to stop: 5
Enter numeric values. Leave blank to stop: 42
Enter numeric values. Leave blank to stop: 73
Enter numeric values. Leave blank to stop: ab
Enter numeric values. Leave blank to stop: abc
Enter numeric values. Leave blank to stop: 
[5, 42, 73]

答案 1 :(得分:0)

字符串具有内置函数isdigit(),如果所有字符都是数字,则返回true。

如果未输入任何内容,则使用len()函数检测字符串是否为空。

More info here

你的代码看起来像这样:

 if a.isdigit():
     #keep going, and add it to the list
 elif len(a) == 0:
        break #stop the loop

答案 2 :(得分:0)

我的方法类似于@CoryKramer,只有很小的改动

>>> values = []
>>> while True:
       val = raw_input('Enter Number : ')
       if not val:
          print values
       elif val.isdigit():
          values.append(int(val))
       else:
          print 'you have entered non - digit value'

Enter Number : 2
Enter Number : a
you have entered non - digit value
Enter Number : 3
Enter Number : 5
Enter Number : 6
Enter Number : 22
Enter Number : 546
Enter Number : 31s
you have entered non - digit value
Enter Number : 345678
Enter Number : 
>>> values
[2, 3, 5, 6, 22, 546, 345678]