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