簡體   English   中英

不區分大小寫的多個條件檢查輸入

[英]case insensitive multiple conditions checking for input

我已經在 pycharm edu 中編寫了一個關於 python 3 的計算器。 部分代碼在這里:

def again():
    calc_again = input('''
Repeat?
''')
#disagreements = frozenset('N'or 'No' or 'Not')
#agreements = frozenset('Y' or 'Yes' or 'Ya')
    if (calc_again.upper()=='Y' or calc_again.upper()=='Yes' or calc_again.upper()=='Ya'):
        calc()
    elif (calc_again=='N' or calc_again=="No" or calc_again=='Not'):
        print('Exit')
        again()
    else:
        print('Type y/n')

當我嘗試輸入除YN之外的任何其他條件時,問題出現了,它只是沒有很好地響應,我懷疑它也不區分大小寫。

我試圖使用:

if calc_again.upper() in agreements:
    do..

但它只是給了我相同的結果。

有人可以修復它並解釋嗎? 另外,使用“ while True ”而不是“ again() ”(11 str)可能更好?

UPD 的最后更改看起來像


def again():    
    possible_conditions = frozenset(['y', 'yes', 'ya', 'n', 'no', 'not'])
    calc_again = input('Go again?')
    agreements = frozenset(['y', 'yes', 'ya'])
    if calc_again.lower() in possible_conditions:
        if calc_again.lower() in agreements:
            calc()
        else:
            print('bye')
            exit()
    else:
        print('choose y or n')
        again()

您的問題是您正在檢查 calc_again 字符串的 UPPER 版本。 因此,calc_again.upper() 中將始終使用大寫字母。 要修復您的代碼,只需將您的可能情況列表放在上面。

if (calc_again.upper()=='Y' or calc_again.upper()=='YES' or calc_again.upper()=='YA'):
        calc()
    elif (calc_again=='N' or calc_again=="NO" or calc_again=='NOT'):
        print('Exit')
        again()
    else:
        print('Type y/n')

另外,我認為您必須將 if 語句放在 while 循環中,因為它必須始終根據用戶輸入執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM