Hướng dẫn atm pin code validation in python assignment expert - xác thực mã pin atm trong chuyên gia gán python

Xác thực mã pin ATM

Viết một chức năng với tên xác thực mã ATM.PIN lấy một từ làm đối số. ATM PIN chỉ được coi là hợp lệ nếu từ đã cho có chứa chính xác 4 hoặc 6 ký tự - tất cả các ký tự phải là chữ số.

Đầu vào

Đầu vào sẽ là một dòng duy nhất chứa một chuỗi.

Đầu ra

Đầu ra phải là một dòng duy nhất chứa "mã pin hợp lệ hoặc" mã pin không hợp lệ ".

Giải trình

Ví dụ: nếu từ đã cho là "9837". Đầu ra phải là "mã pin hợp lệ", vì nó chứa chính xác bốn ký tự và tất cả các ký tự là các chữ số.

Trong khi đó, nếu từ đã cho là "A289H4", đầu ra phải là "mã pin không hợp lệ, mặc dù từ đã cho chứa chính xác sáu ký tự, tất cả các ký tự không phải là chữ số.

Chúng tôi được cung cấp một chuỗi, chúng tôi cần kiểm tra xem chuỗi có phải là tên người dùng hợp lệ hay không. Để trở thành tên người dùng hợp lệ, chuỗi phải đáp ứng các điều kiện sau:

def check_username(s):
    alphabets = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    
    if (type(s[0]) != str):
        return 'Invalid Username1'
    
    if (len(s)<4):
        return 'Invalid Username2'
    
    if (len(s)>25):
        return 'Invalid Username3'
    
    if (s[-1] == '_'):
        return 'Invalid Username4'
    
    for i in s:
        if (i in alphabets) or (i == '_') or (i in numbers):
            continue
        return 'Invalid Username5'
    return 'Valid Username'

t = int(input('Enter number of test cases: '))
for i in range(t):
    s = input('\nEnter username: ')
    s = list(s)
    for i in range(len(s)):
        try:
            s[i] = int(s[i])
        except:
            continue
    print(check_username(s), '\n')

Trước hết, bạn đang thay đổi văn bản của các tiện ích Text mỗi khi bạn muốn hiển thị một số thông báo. Hiển thị đầu ra ở cùng một nơi bạn đang thực hiện đầu vào, không phải là một ý tưởng đúng đắn.

Tôi sẽ đề xuất, sử dụng Label để hiển thị các tin nhắn hoặc cũng vậy, bạn có thể sử dụng messagebox để hiển thị các hộp tin nhắn trong ứng dụng của bạn.


Tuy nhiên, với mã hiện tại của bạn, những gì bạn có thể làm là, tạo một biến toàn cầu cho attempts và chỉnh sửa hàm enter_pin theo logic của bạn:

def enter_pin():   
    message = textRep.get("1.0","end-1c")
    if message=="Welcome\nYou are authorized!\n":        #if user already entered the correct pin, no need to check further
        return

    global attempts                            #the number of attempts left
    attempts -=1
    if attempts<0:                             #when no attempts left
        txtRecipt.delete("1.0", END)
        txtRecipt.insert(END, "Multiple attempts, Your card is blocked, please contact customer service")
        return                                 #no need to check further
    
    pinnum  = txtRecipt.get("1.0","end-1c")
    if ((pinnum == str("0000")) or (pinnum == str("9874")) or (pinnum == str("5689") )):
        textRep.delete("1.0", END)
        textRep.insert(END, 'Welcome\nYou are authorized!\n')
        #....whatever messages you want to display
    elif attempts==0:                          #if it's wrong pin and also this was the last try
        enter_pin()                            #then call this function again, then it will go to the case- if attempts<0
    else:
        txtRecipt.delete("1.0", END)
        txtRecipt.insert(END, 'Invalid Pin Number'+ "\n\n")

attempts = 3        #initialize the variable it with value 
txtRecipt = Text(root, height=2)
txtRecipt.pack()
b= Button(root, text="ENTER", command=enter_pin, width = 5)
b.config(font=("Helvetica", 10, 'bold'))
b.pack(pady = 10)
textRep   = Text(root, height=2)
textRep.pack()

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:48 (UTC/GMT +8 giờ)

Python có điều kiện: Bài tập-15 với giải pháp

Viết chương trình Python để kiểm tra tính hợp lệ của mật khẩu (nhập từ người dùng).

Thẩm định :

  • Ít nhất 1 chữ cái giữa [A-Z] và 1 chữ cái giữa [A-Z].
  • Ít nhất 1 số giữa [0-9].
  • Ít nhất 1 ký tự từ [$#@].
  • Độ dài tối thiểu 6 ký tự.
  • Độ dài tối đa 16 ký tự.

Giải pháp mẫu:-

Mã Python:

import re
p= input("Input your password")
x = True
while x:  
    if (len(p)<6 or len(p)>12):
        break
    elif not re.search("[a-z]",p):
        break
    elif not re.search("[0-9]",p):
        break
    elif not re.search("[A-Z]",p):
        break
    elif not re.search("[$#@]",p):
        break
    elif re.search("\s",p):
        break
    else:
        print("Valid Password")
        x=False
        break

if x:
    print("Not a Valid Password")

Đầu ra mẫu:

Input your [email protected]                                                                                   
Valid Password 

Sơ đồ:

Hướng dẫn atm pin code validation in python assignment expert - xác thực mã pin atm trong chuyên gia gán python

Trực quan hóa thực thi mã Python:

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

Trình chỉnh sửa mã Python:

Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus.

Trước: Viết chương trình Python chấp nhận một chuỗi và tính toán số chữ số và chữ cái. Các số thu được phải được in theo trình tự được phân tách bằng dấu phẩy. Write a Python program that accepts a string and calculate the number of digits and letters.
Next: Write a Python program to find numbers between 100 and 400 (both included) where each digit of a number is an even number. The numbers obtained should be printed in a comma-separated sequence.

Python: Lời khuyên trong ngày

Cấu trúc Deques (Deques là một khái quát của các ngăn xếp và hàng đợi):

>>> import collections
>>> Q = collections.deque()
>>> Q.append(1)
>>> Q.appendleft(2)
>>> Q.extend([3, 4])
>>> Q.extendleft([5, 6])
>>> Q
deque([6, 5, 2, 1, 3, 4])
>>> Q.pop()
4
>>> Q.popleft()
6
>>> Q
deque([5, 2, 1, 3])
>>> Q.rotate(3)
>>> Q
deque([2, 1, 3, 5])
>>> Q.rotate(-3)
>>> Q
deque([5, 2, 1, 3])

>>> last_three = collections.deque(maxlen=3)
>>> for i in range(4):
...     last_three.append(i)
...     print ', '.join(str(x) for x in last_three)
...
0
0, 1
0, 1, 2
1, 2, 3
2, 3, 4