python脚本落入无限while循环中
我希望脚本重复输入问题,直到用户提示正确答案。在用户提示正确答案后,脚本必须继续执行相对if语句(在本例中为python脚本落入无限while循环中,python,while-loop,Python,While Loop,我希望脚本重复输入问题,直到用户提示正确答案。在用户提示正确答案后,脚本必须继续执行相对if语句(在本例中为hostname或file)。我给出了下面的代码,但似乎陷入了无限循环 import socket def ipFromHost(): opt1 = input('Do you want provide hostname or file: ') while opt1 != 'hostname' or 'file': input('Please, type "hostn
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()))
谢谢 由于opt1!='“主机名”或“文件”:检查2个条件:
opt1!='主机名“
或“文件”
opt1!='主机名“
将计算为True
,第二个条件实际上检查'file'
是否为True
或False
(将if opt1!=“file”
与if'file'
进行比较)。您可以检查python中字符串的布尔值的答案
由于如果“file”
总是True
会生成一个无限循环
修理
而opt1!='hostname'和opt1!='文件“:
[使用和
,因为opt1
必须与这两个选项不同]或而opt1不在('hostname','file')
[在我的选项中似乎更整洁]您的代码应该如下所示:
def ipFromHost():
opt1 = input('Do you want provide hostname or file: ')
while opt1 not in ('hostname', 'file'):
opt1 = input('Please, type "hostname" or "file"')
如注释中所述,您的while循环的条件不好。
while opt1!='hostname'或'file':
没有做您认为应该做的事情…而opt1!='主机名“或”文件“:
这被解释为:While opt1!='hostname'或'file'==true或'file'==true事实上,除0以外的每一项都是true元组(而不是列表)的性能更高,更好地反映了比较值的不变性。感谢您的回答和解释。我现在可以看到循环是“固定”的,但是在提示hostname或file>>>ipFromHost()后,脚本中的if语句无法继续。是否要提供主机名或文件:home请,键入“主机名”或“文件”:home请,键入“主机名”或“文件”:file请,键入“主机名”或“文件”:hostname请,键入“主机名”或“文件”:
@FedericoOlivieri我看到我的答案了:你的代码没有用用户输入更新opt1的值。@tehhowch我不明白你的意思。你能提供一个例子来说明如何修复它,这样我就可以理解了。谢谢@FedericoOlivieri-正如@tehhowch所说,在循环中,你要求input()
,但你没有将结果分配到opt1
对不起,伙计们,我现在已经得到了。它按预期工作。谢谢你的时间
while opt1 not in ["hostname", "file"]:
opt1 = input(...