Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环-输入要列出的数字,don';不允许字母输入,请按enter键进行中断。。?_Python_Python 2.7 - Fatal编程技术网

Python 循环-输入要列出的数字,don';不允许字母输入,请按enter键进行中断。。?

Python 循环-输入要列出的数字,don';不允许字母输入,请按enter键进行中断。。?,python,python-2.7,Python,Python 2.7,我整天都在这样做,但毫无进展,这当然也应该很简单,但我对Python还是新手。谷歌没有提出太多,所以这是我的最后手段 它应该是一些基本代码,用于手动将数值放入列表中。如果我在脚本中添加一个“打印”行,我可以看到在执行过程中成功地输入了值,但我似乎无法通过将输入留空来添加正确的脚本来打破循环。目前,如果我设置任何东西使其中断,脚本在运行时似乎会冻结,我必须完全重置控制台 我还想知道是否有办法确保输入始终是整数?如果用户输入任何非数字的内容,最好让事情变得更干净,并显示错误消息或其他内容 这是密码

我整天都在这样做,但毫无进展,这当然也应该很简单,但我对Python还是新手。谷歌没有提出太多,所以这是我的最后手段

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

我还想知道是否有办法确保输入始终是整数?如果用户输入任何非数字的内容,最好让事情变得更干净,并显示错误消息或其他内容

这是密码

values = []
while True:
    a = raw_input('Enter numeric values. Leave blank to stop: ')
    if a == (??????) :
        break
values.append(float(a)) 

谢谢

您只能将数字限制为带有

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]

您只能将数字限制为带有

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]

字符串有一个内置函数
isdigit()
,如果所有字符都是数字,该函数将返回true

要在未输入任何内容时中断,请使用
len()
函数检测字符串是否为空

您的代码如下所示:

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

字符串有一个内置函数
isdigit()
,如果所有字符都是数字,该函数将返回true

要在未输入任何内容时中断,请使用
len()
函数检测字符串是否为空

您的代码如下所示:

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

我的方法类似于@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]

我的方法类似于@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]

如果可以生成字符串,则可以执行以下操作:If(a==“”)和在else子句中将字符串转换为浮点值如果可以生成字符串,则可以执行以下操作:If(a=“”)和在else子句中将字符串转换为浮点值更稳健的解决方案是使用
isdigit
。因为标点符号之类的东西将通过
isalpha
,但不是有效数字,并且在尝试转换为
float
时会抛出异常,所以更可靠的解决方案是使用
isdigit
。因为标点符号之类的内容将通过
isalpha
,但不是有效数字,并且在尝试转换为
float