-6

在我的 inputCheck 函数中,当用户输入在检查后通过是否是可接受的输入时,应该通过打印消息确认,然后运行另一个函数 - 但是它没有这样做,我不知道为什么 - 你能建议如何解决问题?非常感谢!

def main():
    print('WELCOME TO THE WULFULGASTER ENCRYPTOR 9000')
    print('==========================================')
    print('Choose an option...')
    print('1. Enter text to Encrypt')
    print('2. Encrypt text entered')
    print('3. Display Encrypted Text!')
    menuChoice()

def menuChoice():
    valid = ['1','2','3']
    userChoice = str(input('What Would You Like To Do? '))
    if userChoice in valid:
        inputCheck(userChoice)
    else:
        print('Sorry But You Didnt Choose an available option... Try Again')
        menuChoice()

def inputCheck(userChoice):
    if userChoice == 1:
        print('You Have Chosen to Enter Text to Encrypt!')
        enterText()
    if userChoice == 2:
        print('You Have Chosen to Encypt Entered Text!')
        encryptText()
    if userChoice == 3:
        print('You Have Chosen to Display Encypted Text!')
        displayText()

def enterText():
    print('Enter Text')

def encryptText():
    print('Encrypt Text')

def displayText():
    print('Display Text')


main()
4

1 回答 1

3

您将用户的输入转换为字符串 ( str(input('What ...'))),但将其与inputCheck. 由于 中没有else路径inputCheck,因此当您输入“有效”选项时不会发生任何事情。

此外,如果您使用的是 Python 2,则 usinginput不是您想要的,raw_input而是要走的路(例如,请参阅Python3.x 中 raw_input() 和 input() 之间的区别是什么?)。

除此之外,menuChoice每当用户输入非法选择时递归调用很可能是一个坏主意:输入非法选择几十或几千次,您的程序将崩溃(除了浪费大量内存)。你应该把代码放在一个循环中:

while True:
    userChoice = str(raw_input('What Would You Like To Do? '))
    if userChoice in valid:
        inputCheck(userChoice)
        break
    else:
        print('Sorry But You Didnt Choose an available option... Try Again')
于 2013-03-25T18:43:03.450 回答