编写一个读取单个字符串的程序,并确定是否作为密码有效 [英] Write a program that reads a single string and determines whether or not is valid as a password

查看:110
本文介绍了编写一个读取单个字符串的程序,并确定是否作为密码有效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题是我的家庭作业。我不是在找人告诉我为什么我的代码不起作用的答案。正在寻找如何解决这个问题的正确方向。当我运行这个时,我得到



'返回'外部功能:< string>,第25行



我不明白为什么会这样。有人能帮助我吗?



如下代码见:









  import  re 

def 验证(密码):


计算长度
length_error = (len(密码)< = 12 len(密码)> = 6

搜索数字
d_error = re.search(r \d,密码) < span class =code-keyword>无

搜索大写
ucase_error = re.search(r [AZ],密码)

搜索小写
lcase_error = re.search(r [az ],密码)

搜索符号
sym_error = re.search(r [$#@ + r ' ]',密码)

< span class =code-comment># 总体结果
password_ok = (length_erro r digit_error uppercase_error lowercase_error < span class =code-keyword>或 symbol_error)

print ' password_ok',password_ok,' \ nlength_error',length_error,' \ nd_error',digit_error,' \ nucase_error',ucase_error,' \ nncase_error',lowercase_error,' \ nsns_error' ,symbol_error
return ' password_ok'

def main():

将cmd设置为除quit()之外的任何内容
cmd = ' '

处理用户命令
cmd = input(' > '
cmd!= ' 退出'
密码= cmd
如果验证(密码):
print 密码有效
else
print 密码无效

cmd =输入(' >'

main()





我有什么尝试过:



我觉得我已经尝试了所有的东西,但不确定为什么这段代码不能正常工作。

解决方案

#@ + r ' ]',密码)

整体结果
password_ok = (length_error digit_error uppercase_error lowercase_error symbol_error)

print ' password_ok',password_ok,' \ nlength_error',length_error,' \ nd_error',digit_error,' \ nucase_error',ucase_error,' \ nncase_error',lowercase_error,' \ nnsym_error',symbol_error
return ' password_ok'

def main():

将cmd设置为除quit()之外的任何内容
cmd = ' '

< span class =code-comment>处理用户命令
cmd = input(' > '
cmd!= ' 退出'
密码= cmd
如果验证(密码):
print 密码有效
else
print 密码无效

cmd =输入(' >'

main()





我有什么尝试过:



我觉得我已经尝试了所有东西,但不确定为什么这段代码不能正常工作。


< blockquote> Python的基本语法是用缩进组织代码。正如错误所说,除了第一行之外,在validate(密码)函数下的那些代码行没有缩进,这使得它们在函数之外,包括return语句。 main()也是如此。此外,不同版本的Python之间的打印方法的构造也存在差异。您应该参考官方文档和在线教程以获得正确的学习。我不是在评论你的代码逻辑,我怀疑它会起作用。一步一步。祝你好运。


This problem is a homework assignment that I have. I'm not looking for someone to tell me the answer as to why my code isnt working. Looking for push in the right direction on how to fix this. When I run this, I get

'return' outside function: <string>, line 25

I don't understand why this happens. Would anyone be able to help me?

See below for code:




import re

def validate(password):


# calculating the length
    length_error = not( len(password) <= 12 and len(password) >= 6)

# searching for digits
d_error = re.search(r"\d", password) is None

# searching for uppercase
ucase_error = re.search(r"[A-Z]", password) is None

# searching for lowercase
lcase_error = re.search(r"[a-z]", password) is None

# searching for symbols
sym_error = re.search(r"[$#@"+r'"]', password) is None

# overall result
password_ok = not ( length_error or digit_error or uppercase_error or lowercase_error or symbol_error )
  
print 'password_ok ',password_ok,'\nlength_error ',length_error,'\nd_error ',digit_error,'\nucase_error ',ucase_error,'\nlcase_error ',lowercase_error,'\nsym_error ',symbol_error
return 'password_ok'

def main():

# set cmd to anything except quit()
    cmd = ' '
  
# process the user commands
cmd = input(' > ')
while cmd != 'quit':
    password = cmd
if validate(password):
    print "Password is valid"
else:
    print "Password is invalid"

cmd = input(' > ')

main()



What I have tried:

I've feel like I've tried everything, but unsure why this code wont work.

解决方案

#@"+r'"]', password) is None # overall result password_ok = not ( length_error or digit_error or uppercase_error or lowercase_error or symbol_error ) print 'password_ok ',password_ok,'\nlength_error ',length_error,'\nd_error ',digit_error,'\nucase_error ',ucase_error,'\nlcase_error ',lowercase_error,'\nsym_error ',symbol_error return 'password_ok' def main(): # set cmd to anything except quit() cmd = ' ' # process the user commands cmd = input(' > ') while cmd != 'quit': password = cmd if validate(password): print "Password is valid" else: print "Password is invalid" cmd = input(' > ') main()



What I have tried:

I've feel like I've tried everything, but unsure why this code wont work.


The very basic syntax of Python is that the code is organized with indentation. As the error said, those lines of code, apart from the first one, under the function of validate(password) are not indented, that made them outside of the function, including the return statement. The same goes for the main(). In addition, there are differences in the construct of the print method between different versions of Python. You should refer to the official documentation and online tutorials for proper learning. I'm not commenting on your logic of the code, I doubt it will work. Take one step at a time. Good luck.


这篇关于编写一个读取单个字符串的程序,并确定是否作为密码有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆