如果省略不起作用。我的代码有什么问题?

时间:2019-09-27 10:18:20

标签: python python-3.x

我试图通过PIN码进行安全保护,但是它不起作用...该怎么做?

我一直在尝试创建要求输入PIN的程序。如果您输入的PIN码不正确3次,程序将告别您,然后程序结束。另外,如果您输入正确的PIN码,该程序将允许您继续进行下一步。

 const urls = [{ name: 'site1', url: 'https://something' },
{ name: 'site2', url: 'https://something' },
{ name: 'site3', url: 'https://something' }];

Promise.all(urls.map(item => fetch(item.url)
.then(res => res.json()).catch((ex) => ex)))
.then((values) => console.log(values));

如果我启动该程序,它会说“写您的PIN码”。如果我第一次尝试输入正确的PIN码,程序将继续进行下一步,但是如果我输入3次错误的PIN码,该程序也将继续。我已经尝试过以其他方式修复它...我尝试过通过for循环来修复它,除了for循环外,但是它不起作用。我不知道现在出了什么问题...感谢我的每一个反应和建议。

5 个答案:

答案 0 :(得分:3)

这会做同样的事情

cnf = 0
print("Vitajte v programe bankomat!")
for i in range(3):
    vstup=int(input("Zadaj Váš 4-číselný PIN: "))
    if vstup == 7863:
        cnf = 1
        break
    elif vstup != 7863:
        print("Nesprávny PIN kód. Počet zostávajúcich pokusov: {}".format(3-i))
        continue
if cnf !=1:
    print("3x zadaný zlý PIN kód. DOVIDENIA!")

答案 1 :(得分:1)

您的continue位置错误。删除continue

import time

money=1000

pokus=0
pin=7863

print("Vitajte v programe bankomat!")
for i in range(3):
    vstup=int(input("Zadaj Váš 4-číselný PIN: "))
    if vstup == 7863:
        break
    elif vstup != 7863:
        pokus=pokus+1
        print("Nesprávny PIN kód. Počet zostávajúcich pokusov: {}".format(3-pokus))
        # removed the continue here
        if pokus == 3:
            print("3x zadaný zlý PIN kód. DOVIDENIA!")
            time.sleep(3)
            quit()
        elif pokus < 3:
            continue

除非您绝对需要,否则我也建议使用break而不是quit()

答案 2 :(得分:1)

删除第一个continue和最后一个elif(因为它没有用):

import time

money=1000

pokus=0
pin=7863

print("Vitajte v programe bankomat!")
for i in range(3):
    vstup=int(input("Zadaj Váš 4-číselný PIN: "))
    if vstup == 7863:
        break
    elif vstup != 7863:
        pokus=pokus+1
        print("Nesprávny PIN kód. Počet zostávajúcich pokusov: {}".format(3-pokus))

        if pokus == 3:
            print("3x zadaný zlý PIN kód. DOVIDENIA!")
            time.sleep(3)
            quit()

答案 3 :(得分:1)

此代码将以更简洁的方式执行此操作。

import time

correct_pin_code = 7863
incorrect_inputs = 0

while(incorrect_inputs <= 3):
    if(incorrect_inputs == 3):
        print("Too many failed attemps, quitting")
        quit()
    input_pin = int(input("Enter your 4 digits PIN code"))
    if(input_pin == correct_pin_code):
        print("Correct PIN code")
        break
    else:
        print("Wrong PIN code, " + str(3 - incorrect_inputs) + "attemps left")
        time.sleep(3)

答案 4 :(得分:0)

我认为您必须在条件中包括尝试次数以及输入。 您可以尝试这样的事情:

pin = 7863
test = 2

while int(input()) != pin and test > 0:
  print("Incorrect pin. Try again.")
  test -= 1

if test == 0:
  print("quit")
  quit()

print("OK. Continue the next phase.")