我希望脚本重复input
问题,直到用户提示正确答案。在用户提示正确答案之后,脚本必须继续使用相对if语句(在本例中为hostname
或file
)。我拿出了下面的代码,不过似乎陷入了无限循环。你知道吗
import socket
def ipFromHost():
opt1 = input('Do you want provide hostname or file: ')
while opt1 != 'hostname' or 'file':
input('Please, type "hostname" or "file"')
if opt1 == 'hostname':
optHostname = input('Please, provide hostname: ')
print(socket.gethostbyname(optHostname.strip()))
elif opt1 == 'file':
optFile = input('Please, provide file name: ')
with open(optFile) as inputFile:
for i in inputFile:
print(socket.gethostbyname(i.strip()))
谢谢!你知道吗
您有一个无限循环,因为条件
while opt1 != 'hostname' or 'file':
检查2个条件:opt1 != 'hostname'
或'file'
即使
opt1 != 'hostname'
将计算为True
,第二个条件实际上检查'file'
是True
还是False
(比较if opt1 != 'file'
和if 'file'
)。您可以检查this关于python因为
if 'file'
总是True
,所以生成一个无限循环固定
while opt1 != 'hostname' and opt1 != 'file':
[使用AND
因为opt1
必须与两个选项不同]或while opt1 not in ('hostname', 'file')
[在我看来更整洁了]您的代码应该如下所示:
如注释中所述,while循环的条件很差。你知道吗
相关问题 更多 >
编程相关推荐