我是一名正在学习python的学生,我想仅从input()函数获取数字输入,并检查输入是否全部为数字。这是我的代码:
print('Input any random numbers here')
input1 = input('Input 1\n')
input2 = input('Input 2\n')
input3 = input('Input 3\n')
input4 = input('Input 4\n')
new_list = [input1, input2, input3, input4]
for data in new_list:
if not data.isnumeric() == True:
if not new_list[0].isnumeric() == True:
del new_list[0]
print('Rekey 1')
input1 = input()
new_list.insert(0, input1)
elif not new_list[1].isnumeric() == True:
del new_list[1]
print('Rekey 2')
input2 = input()
new_list.insert(1, input2)
elif not new_list[2].isnumeric() == True:
del new_list[2]
print('Rekey 3')
input3 = input()
new_list.insert(2, input3)
elif not new_list[3].isnumeric() == True:
del new_list[3]
print('Rekey 4')
input4 = input()
new_list.insert(3, input4)
print(new_list)
else:
print('Done Checking')
print(new_list)
break
要进行检查,我将创建一个包含变量的列表:输入1,2,3,4:new_list = [input1, input2, input3, input4]
并实现一个for循环以解析列表中的变量
但是我意识到,如果我要通过为第一个输入:input1输入字母(错误的值类型)来运行此代码。它将调用for循环以执行其中的代码以检查输入:
for data in new_list:
if not data.isnumeric() == True:
if not new_list[0].isnumeric() == True:
del new_list[0]
print('Rekey 1')
input1 = input()
new_list.insert(0, input1)
elif not new_list[1].isnumeric() == True:
del new_list[1]
print('Rekey 2')
input2 = input()
new_list.insert(1, input2)
elif not new_list[2].isnumeric() == True:
del new_list[2]
print('Rekey 3')
input3 = input()
new_list.insert(2, input3)
elif not new_list[3].isnumeric() == True:
del new_list[3]
print('Rekey 4')
input4 = input()
new_list.insert(3, input4)
print(new_list)
else:
print('Done Checking')
print(new_list)
break
但是,如果我为输入1的数字值(正确值类型)准确键入,为其余输入变量:input2,input3和input4键入字母值(错误值类型),则它某种程度上不会调用for循环来执行其中的代码,并如上所述检查输入内容。'
我已经审查了我的代码几次,但我在代码中找不到问题,我所能理解的是可迭代对象已用尽,但我不知道如何解决。
我希望有人可以通过简单且不需要复杂的导入功能来回答我的疑问
答案 0 :(得分:0)
欢迎使用Python!此代码的一些注意事项:
“硬编码”通常是个坏主意,应避免使用它
在python中,由于python具有集成的内存管理器,因此在大多数情况下无需使用del
'if not data.isnumeric()== True'可以重写为'if not data.isnumeric()'
您的代码不起作用,因为如果遇到任何数字值,循环就会中断并且代码结束。
总而言之,我将像这样重写您的代码:
print('Input any random numbers here')
input1 = input('Input 1\n')
input2 = input('Input 2\n')
input3 = input('Input 3\n')
input4 = input('Input 4\n')
new_list = [input1, input2, input3, input4]
i = 0
while i < len(new_list):
if not new_list[i].isnumeric():
new_list[i] = input(f'Rekey {i+1}\n')
i -= 1
i += 1
尽管这可能不是最佳解决方案,但是您可以尝试一些东西。让我知道你是否有疑问