无法在Python中分配给Literal

时间:2014-03-10 22:45:54

标签: python

我在python中收到错误,上面写着“我无法分配给文字”。我希望有人能帮助我理解为什么会这样。这是我的代码:

# Chapter 3 Challenge part 3
# use the code below and the following
# directions to see if you can solve the problem

# Your Co-Worker has been asked to write a
#   1st time "Log-in" program in which a user has to
#    sign in with their user name. If they enter
#    the correct id name they need to be asked
#    to create their password.

#   They were required to make sure the user did
#   not leave the username entry blank and must have the
#   correct user name or the progam should re-ask
#   them to sign in... They cannot figure out what
#   to do, so they have called on you to help...

#   Here is what they have so far...
#   They started their program like this....
#   and included some of their documentation.



# Get username, check to see if not empty,
# then verify that username is correct.
# using username "jalesch" as test user.
name = False
while not name:
    name = raw_input("Enter your user name: ")

print "Welcome," , name ,  "you must create a password."

password = False

while not password:
    password = raw_input("""Enter a password.
Password must be at least 6 characters in length,
and must include one of these symbols (!, $, ?, &): """)
    while len(password) < 6:
        for "!" in password or "$" in password or "?" in password or "&" in password:
            password = raw_input("""Enter a password.
Password must be at least 6 characters in length,
and must include one of these symbols (!, $, ?, &): """)

    print "This has met the requirements."

check = raw_input("Please re-enter your password:")
while check != password:
    print "You have entered the wrong password"
    check = raw_input("Please re-enter your password:")
print "Welcome to the program!"


# prompt user to create a password that meets the
# following requirements:
#       - Must be at least 6 characters in length
#       - Must include at least one of these 4 symbols
#           - ! $ ? &
# Once the user has entered their password, the program
#  must check to see if it meets the requirements.
#   If the requirements are not met, it should reask them
#   to put in a password that meets the requirements
#   until they get it correct.
#   Test password is:  $program!

#   If it meets the requirements then prompt the user
#   to re enter the password, and check that the
#   first and second entry matches.
#       If the 1st and 2nd match. display "Welcome to the program"
#       If the 1st and 2nd don't match, re-prompt for the password
#       until they get a correct match. 

我还认为当我尝试查找特殊字符时代码出现故障,因为它正在跳过其中一个while循环。感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:4)

在这一行:

for "!" in password or "$" in password or "?" in password or "&" in password:

您可能打算使用if

if "!" in password or "$" in password or "?" in password or "&" in password:

for x in y遍历y,按顺序将每个成员分配到x,在y的每个成员的循环中运行以下缩进代码。您无法为"!"分配值,因为这是文字字符,而不是变量。

答案 1 :(得分:0)

def get_name(prompt):
    while True:
        name = raw_input(prompt).strip()
        if name:
            return name

def get_password(prompt):
    while True:
        name = raw_input(prompt).strip()
        if len(name) >= 6 and (set(name) & set("!$?&")):
            return name

name = get_name("Enter your user name: ")
print("Welcome, {}, you must create a password.".format(name))

while True:
    print("Now enter a password. It must be at least 6 characters in length, and must include a symbols (!, $, ?, &).")
    pass1 = get_password("Enter a password: ")
    pass2 = get_password("Please re-enter your password: ")

    if pass1 == pass2:
        print("Welcome to the program")
        break
    else:
        print("No match! Please try again")