我正在编写一个小程序来自动填写表单。我希望在此过程中进行检查以确保用户输入正确并且如果拼写错误,则有机会进行更正。输出转到名为SN.dbf的文件。
ETA:SN代表序列号。我为文件生成一个SN,数字本身就在文件名中。
我的代码:
def Name(SN):
verify = False
fname = raw_input('What is your first name? ')
lname = raw_input('What is your last name? ')
name = fname+' '+lname
print name
check = raw_input('Is this correct? yes/no')
if check.upper() not in {'YES','Y'}:
verify = True
else:
return name
while verify:
verify = False
Name(SN)
name = Name(SN)
with open(SN+'.dbf','w') as mfile:
mfile.write('Name: '+str(name)+'\n')
当我浏览它并选择yes时,它会将名称写入文件。但是当我选择“否”并再次通过它时,它会返回“无”#39;我只需要知道我做错了什么。对python来说还是个新手......
答案 0 :(得分:0)
如果用户首先回答“否”,则输入while verify
循环并以递归方式再次呼叫Name
。您继续这样递归,直到用户回复yes
。然后,对Name
的最内部调用返回,依此类推。
问题是,当你递归调用Name
时,你不会捕获它的返回值。替换这个:
while verify:
verify = False
Name(SN)
使用:
while verify:
verify = False
return Name(SN)
添加“return”语句。
更好的是,更传统地构建代码:
def Name(SN):
while True:
fname = raw_input('What is your first name? ')
lname = raw_input('What is your last name? ')
name = fname+' '+lname
print name
check = raw_input('Is this correct? yes/no')
if check.upper() in {'YES','Y'}:
return name