为什么我的程序不会退出?

Rez*_*zic 0 python function exit quit

好吧,所以我已经尝试了一段时间了,一旦它运行,我似乎找不到关闭程序的方法.

我想要它做的是如果用户选择'no'以下结束程序:

elif y == 'n' or 'no':
    sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

无论我选择什么,都会将程序返回给partOne函数.我尝试过不同的尝试来解决这个问题,比如搬家

partOne()
Run Code Online (Sandbox Code Playgroud)

从程序结束到两个函数之间但是不起作用,因为那时PartTwo函数尚未定义.

感谢您的答复.

import hashlib
import sys

def partOne():
    x = input("\nEnter something to hash: ")
    hash_object = hashlib.sha256(x.encode())
    hex_dig = hash_object.hexdigest()
    print("\nPlain text: ")
    print(x)
    print("\nHashed text: ")
    print(hex_dig)
    print("\nYour password: ")
    print(hex_dig[::9])
    partTwo()

def partTwo():
    y = input("\nDo you want to make another password? (y/n): ")
    if y == 'y' or 'yes':
        partOne()
    elif y == 'n' or 'no':
        sys.exit(0)
    else:
        print("\nYou need to type either 'y' or 'n'.")
        partOne()

partOne()
Run Code Online (Sandbox Code Playgroud)

shs*_*ank 6

尝试 y == 'n' or y =='no'

代替 y == 'n' or 'no'

>>> y = 'anything'
>>> 
>>> bool(y == 'n' or 'no')
True
Run Code Online (Sandbox Code Playgroud)

你的陈述总是回来True.相反,检查y == 'no'只是检查'no',任何转换在python为bool是True如果它不是None,False0.

在字符串的情况下,和其他iterables它,如果它不是空的,例如返回True '',[],{},()将始终返回False.

或者正如Foo Bar用户所说,if y.lower() in ('n', 'no')也会这样做.lower()将确保匹配不区分大小写.

  • 或者这个(在"是","y")` (5认同)