【发布时间】:2016-11-30 23:17:35
【问题描述】:
用户应插入一个名称作为输入,然后用是或否(或其任何派生词)确认三字名称是否包含中间名。到目前为止,如果答案是肯定的,我已经让循环工作了;但是如果答案是否定的,它会一直循环问题。
目的:如果答案是肯定的,程序将理解它是一个带有中间名的三字名称,因此执行与中间名的命名组合;如果它不是,程序将理解它是一个 3 字的名字,带有第二个姓氏而不是中间名,因此会相应地执行命名组合。
请注意,我已经排除了很多代码用于共享目的。
我做错了什么?我的问题是关于循环的 elif 部分。
print ('enter name')
providedname = input ()
while providedname != 'quit':
if len(providedname.split())==4:
pass
elif len(providedname.split())==3:
print ('Does the name include a middle name or middle initial? Please type yes or no:')
userinput = input()
if userinput.startswith ('ye' or 'Ye' or 'YE' or 'ya' or 'Ya' or 'YA'):
firstname, middlename, lastname = providedname.split()
elif userinput.startswith ('no' or 'No' or 'NO' or 'na' or 'Na' or 'NA'):
firstname, lastname, secondlastname = providedname.split()
else:
pass
print ('enter name or type quit or q to exit')
providedname=input()
continue
【问题讨论】:
-
该代码在语法上无效。此外,它仅以单个空格缩进,因此很难阅读。提供一个minimal reproducible example,它实际上重现了问题。
-
提示:
if userinput[:2].lower() in {'ye', 'ya'}: -
谢谢乔恩,它的代码很长,所以我不得不把它删掉。我添加了双空格作为缩进,以使其更易于阅读。我还添加了我打算如何拆分三个单词的名称输入。
标签: python python-3.x loops if-statement while-loop