如何让我的脚本只接受数字输入而不会搞砸
How do I make my script take only numeric inputs without screwing it up
我一直在用这个任务撞墙,我似乎一辈子都想不通。
我想编写一个脚本,提示用户输入一个数字,并在每次输入数字后将该数字存储在列表中。当用户只按回车键而不输入任何内容时,脚本将打印出列表中的最高数字。
这是我到目前为止写的:
x = 0
mylist = []
while x != '':
x = input("enter a number:")
mylist.append(x)
if x == '':
print(max(mylist))
我看到这段代码有两个问题:
用户可以输入一个字符串(我尝试通过 x = int(input(...) 来解决这个问题,但这只会导致新的错误:
ValueError: invalid literal for int() with base 10: ''
print(max(mylist)) 只打印出初始整数最大的数字。例如,如果用户输入 51 和 112,它会打印出 51.
感谢您花时间帮助我。
我建议您使用 try
语句来检查输入是否为整数。以下是一个尝试将用户输入转换为整数并将其附加到列表的实现。在 ValueError
(非整数输入)的结果中,它将打印列表中的最大整数。使用 raw_input
而不是 input
也是一种很好的做法,以防止 python 尝试自行转换输入但失败。
x=0
mylist=[]
while x!='':
x = raw_input("enter a number:")
try:
x = int(x)
mylist.append(x)
except ValueError:
if x == '':
print(max(mylist))
这可以防止用户向列表中添加非整数,并且是处理意外用户输入的更好方法。作为一个额外的好处,这种方法还可以在将来轻松添加更多条件。
使用不同的变量来测试 While。检查 isnumeric() 的输入,如果它是数字,则在将其附加到数组时将其转换:
keepMoving = True
mylist = []
while keepMoving:
x = input("enter a number:")
if x.isnumeric():
mylist.append(int(x))
else:
keepMoving = False
print(max(mylist))
我一直在用这个任务撞墙,我似乎一辈子都想不通。
我想编写一个脚本,提示用户输入一个数字,并在每次输入数字后将该数字存储在列表中。当用户只按回车键而不输入任何内容时,脚本将打印出列表中的最高数字。
这是我到目前为止写的:
x = 0
mylist = []
while x != '':
x = input("enter a number:")
mylist.append(x)
if x == '':
print(max(mylist))
我看到这段代码有两个问题:
用户可以输入一个字符串(我尝试通过 x = int(input(...) 来解决这个问题,但这只会导致新的错误:
ValueError: invalid literal for int() with base 10: ''
print(max(mylist)) 只打印出初始整数最大的数字。例如,如果用户输入 51 和 112,它会打印出 51.
感谢您花时间帮助我。
我建议您使用 try
语句来检查输入是否为整数。以下是一个尝试将用户输入转换为整数并将其附加到列表的实现。在 ValueError
(非整数输入)的结果中,它将打印列表中的最大整数。使用 raw_input
而不是 input
也是一种很好的做法,以防止 python 尝试自行转换输入但失败。
x=0
mylist=[]
while x!='':
x = raw_input("enter a number:")
try:
x = int(x)
mylist.append(x)
except ValueError:
if x == '':
print(max(mylist))
这可以防止用户向列表中添加非整数,并且是处理意外用户输入的更好方法。作为一个额外的好处,这种方法还可以在将来轻松添加更多条件。
使用不同的变量来测试 While。检查 isnumeric() 的输入,如果它是数字,则在将其附加到数组时将其转换:
keepMoving = True
mylist = []
while keepMoving:
x = input("enter a number:")
if x.isnumeric():
mylist.append(int(x))
else:
keepMoving = False
print(max(mylist))