虽然在不应该的时候循环打印响应 - Python
While loop printing a response when it shouldn't - Python
我的程序包含一个简单的 'Y/N' 输入。我在代码中放置了一个 while 循环,它应该在输入的输入不是 'Y/N' 或其任何变体时响应。
import time
count_d = 10
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
sys.exit()
while load != 'Y' or load != 'y' or load != ' Y' or load != ' y' and load != 'N' or load != 'n' or load != ' N' or load != ' n':
print('This answer does not correspond with the desired output')
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
break
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
break
当我确实输入接受的输入时,程序会在需要的地方做出响应,还会打印 while 循环的响应,它被设计为只识别未接受的输入。我犯了什么错误,所以当我正确完成时它会释放错误的输出?
您需要将 while 循环中的 'or' 语句更改为 'and' 语句。
这个例子应该告诉你为什么...
while(!a 或 !b):
//在a为真但b为假的情况下运行
while(!a 和 !b):
//当 a 和 b 都不为真时运行
您可以简化您的检查,从而不必处理那么多繁琐的条件:
if load.strip().lower() == 'y':
和
elif load.strip().lower() == 'n':
和
while load.strip().lower() not in ['y', 'n']:
巧合的是,最后一个将修复您的错误,这是因为您使用 or
代替 and
。
if
和elif
块下面的语句无论是否满足条件都会执行。
为确保仅当不满足 if
和 elif
中的条件时才执行这些语句,必须使用 else
在 else
块中包含 while
循环:
import time
count_d = 10
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
sys.exit()
else:
while load != 'Y' or load != 'y' or load != ' Y' or load != ' y' and load != 'N' or load != 'n' or load != ' N' or load != ' n':
print('This answer does not correspond with the desired output')
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
break
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
break
我的程序包含一个简单的 'Y/N' 输入。我在代码中放置了一个 while 循环,它应该在输入的输入不是 'Y/N' 或其任何变体时响应。
import time
count_d = 10
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
sys.exit()
while load != 'Y' or load != 'y' or load != ' Y' or load != ' y' and load != 'N' or load != 'n' or load != ' N' or load != ' n':
print('This answer does not correspond with the desired output')
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
break
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
break
当我确实输入接受的输入时,程序会在需要的地方做出响应,还会打印 while 循环的响应,它被设计为只识别未接受的输入。我犯了什么错误,所以当我正确完成时它会释放错误的输出?
您需要将 while 循环中的 'or' 语句更改为 'and' 语句。
这个例子应该告诉你为什么...
while(!a 或 !b): //在a为真但b为假的情况下运行
while(!a 和 !b): //当 a 和 b 都不为真时运行
您可以简化您的检查,从而不必处理那么多繁琐的条件:
if load.strip().lower() == 'y':
和
elif load.strip().lower() == 'n':
和
while load.strip().lower() not in ['y', 'n']:
巧合的是,最后一个将修复您的错误,这是因为您使用 or
代替 and
。
if
和elif
块下面的语句无论是否满足条件都会执行。
为确保仅当不满足 if
和 elif
中的条件时才执行这些语句,必须使用 else
在 else
块中包含 while
循环:
import time
count_d = 10
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
sys.exit()
else:
while load != 'Y' or load != 'y' or load != ' Y' or load != ' y' and load != 'N' or load != 'n' or load != ' N' or load != ' n':
print('This answer does not correspond with the desired output')
load = input('Import modules? Y/N')
if load == 'Y' or load == 'y' or load == ' Y' or load == ' y':
print('Modules loading...')
while count_d >0:
print(count_d)
count_d = count_d-1
time.sleep(1)
print('Modules loaded')
break
elif load == 'N' or load == 'n' or load == ' N' or load == ' n':
print('Shutdown initiated.')
break