Tôi có một câu lệnh IF và khác cho mỗi người dùng được cho là sử dụng mã của tôi để đảm bảo họ là chính họ. Tôi đang tự hỏi nếu có một cách hiệu quả hơn để làm điều đó. Những gì tôi muốn mã trông giống như dòng 2 đến 7 Tuy nhiên, hiện tại tôi phải làm cho nó trông giống như dòng 9 - 14 thay thế. Có cách nào tôi có thể làm cho dòng 2 đến 7 hoạt động không?
Tôi đã cố gắng tách từng người dùng bằng một câu lệnh nếu và khác kiểm tra xem người dùng có tồn tại không và nếu họ nhận được mật khẩu được gán cho người dùng đó đúng không. Tôi cũng đã cố gắng sử dụng chức năng danh sách để lưu trữ nhiều người dùng khác nhau làm một biến để nếu chương trình phát hiện bất kỳ người dùng nào, nó sẽ chuyển chúng sang bước tiếp theo, tuy nhiên khi tôi thực hiện chương trình từ chối nhận ra bất kỳ phần tử nào của danh sách là cá nhân. Ví dụ: trong dòng 2 của mã Không người dùng nào được công nhận. Người dùng Blake chỉ được nhận ra nếu tôi tách nó ra nếu khác khối.
user_name = input ("Hello, user please enter your username!") if user_name == ["Jake", "Bake"]: Password = input("Please enter your password %s" %user_name) if Password == ["hello", "notem"]: print ("Welcome back %s" %user_name) else: print ("You are an imposter! Begone!!") else: if user_name == ("Bake"): Password = input("Please enter your password %s" %user_name) if Password == ("hell"): print ("Welcome back %s" %user_name) else: print ("You are an imposter! Begone!!")Ra khỏi dòng 2 đến 7 Tôi hy vọng rằng tôi có thể nhập Jake hoặc thậm chí Blake để có được câu hỏi về mật khẩu. Sau đó, một khi tôi đặt tương ứng và chỉ mật khẩu tương ứng thì tôi sẽ nhận được một sự chào đón trở lại (mà tên người dùng mà tôi đã chọn để đi với). Trong thực tế, chương trình sẽ từ bỏ tôi ngay khi tôi đặt bất kỳ tên người dùng nào vì dường như chương trình không biết cách tiến hành từ dấu nhắc tên người dùng.
Đã hỏi ngày 22 tháng 6 năm 2019 lúc 9:04Jun 22, 2019 at 9:04
if user_name == ["Jake", "Bake"]:
Kiểm tra xem user_name có bằng danh sách ["Jake", "Bake"] hay không.
Nếu bạn muốn kiểm tra kiểm tra xem tên có trong danh sách hay không, hãy sử dụng từ khóa in:
if user_name in ["Jake", "Bake"]:Đã trả lời ngày 22 tháng 6 năm 2019 lúc 9:12Jun 22, 2019 at 9:12
DSCDSCDSC
1.1437 huy hiệu bạc21 Huy hiệu đồng7 silver badges21 bronze badges
1
Vấn đề của bạn là chương trình kiểm tra xem tên người dùng có phải là danh sách ["Jake", "Bake"] không và mật khẩu là danh sách ["hello", "notem"].
Mã chính xác là:
if user_name == ["Jake", "Bake"]: 0
Chỉnh sửa: Bạn quên xử lý trường hợp mà tên người dùng không phải là Jake hay nướng.
Đã trả lời ngày 22 tháng 6 năm 2019 lúc 9:14Jun 22, 2019 at 9:14
Bogdan doicinbogdan doicinBogdan Doicin
2.2725 huy hiệu vàng26 Huy hiệu bạc32 Huy hiệu đồng5 gold badges26 silver badges32 bronze badges
4
Như @DSC đã chỉ ra trước đó: Những gì bạn đã kiểm tra trong câu lệnh IF của mình là liệu đầu vào được đưa ra bởi người dùng có phải là một danh sách hay không. Thay vào đó, những gì bạn nên kiểm tra là liệu đầu vào được đưa ra bởi người dùng có phải là một đối tượng bên trong danh sách hay không.
What you've checked in your if statement is whether or not the input given by the user
is a list in itself.
Instead what you should be checking is whether the input given by the user is an object inside the list.
Ngoài ra, lưu ý bằng cách sử dụng từ điển để giữ {'tên người dùng': 'mật khẩu'} Khóa: Các giá trị sẽ hữu ích để khớp tên người dùng với mật khẩu của người dùng chính xác, trong trường hợp nhiều người dùng.
users = {'Jake':'hello','Bake':'notem'} user_name = input ("Hello, Please enter your username: ") if user_name in users: #Checks whether user exists Password = input("Please enter your password %s" %user_name) if Password == users[user_name]: #Check for that particular user's password. print("Welcome back %s" %user_name) else: print("You are an imposter! Begone!!") else: print('Sorry, That username doesn't exist.')Không phải là cách an toàn nhất để đi về, vì nó cho những kẻ tấn công tiềm năng chính xác những gì họ đã sai (tên người dùng/mật khẩu), nhưng nên thực hiện công việc của bạn.
Ngoài ra, hãy kiểm tra điều này, sẽ giúp bạn có thêm một vài bước phía trước.
Đã trả lời ngày 22 tháng 6 năm 2019 lúc 9:32Jun 22, 2019 at 9:32
Giả sử rằng bạn muốn kiểm tra tên người dùng và mật khẩu tương ứng với tên người dùng đó, Python cung cấp cấu trúc gọi là từ điển. Có thể điều này sẽ hữu ích cho bạn.
userPass = {"Jake": "Hello", "Bake": 'notem'} #dictonary named userPass, "username": "Password" user_name = input ("Hello, user please enter your username!") Password = input("Please enter your password %s" %user_name) if userPass[user_name] == Password: #userPass[user_name] will return password defined in dictonary print ("Welcome back %s" %user_name) else: print ("You are an imposter! Begone!!")Đã trả lời ngày 22 tháng 6 năm 2019 lúc 9:21Jun 22, 2019 at 9:21
Harshil Shahharshil ShahHarshil Shah
1421 Huy hiệu vàng3 Huy hiệu bạc13 Huy hiệu đồng1 gold badge3 silver badges13 bronze badges
2