你能用输入来接受整数和字符串吗?

时间:2017-03-15 20:55:04

标签: python string input exit break

我有一个小脚本,我一直在用Python练习。我无法让我的输入接受if语句的数字,也接受字符串作为小写。

如果用户键入'99'然后关闭程序,我想告诉我的脚本输入任何内容。到目前为止,它在我int(input())的位置有效,但在我input()的地方不起作用。我做错了什么或者我不能做什么?

现在我的if语句如下:

if choice1 == 99:
    break

我应该通过引用将99变成字符串吗?

也许是这样的:

if choice1 == "99":
    break

这是脚本:

global flip
flip = True
global prun
prun = False

def note_finder(word):
    prun = True
    while prun == True:
        print ('\n','\n','Type one of the following keywords: ','\n','\n', keywords,)
        choice2 = input('--> ').lower()
        if choice2 == 'exit':
            print ('Exiting Function')
            prun = False
            start_over(input)
        elif choice2 == 99:   # this is where the scrip doesnt work
            break             # for some reason it skips this elif
        elif choice2 in notes:
            print (notes[choice2],'\n')
        else:
            print ('\n',"Not a Keyword",'\n')

def start_over(word):
    flip = True
    while flip == True:
        print ('# Type one of the following options:\n# 1 \n# Type "99" to exit the program')
        choice1 = int(input('--> '))
        if choice1 == 99:
            break
        elif choice1 < 1 or choice1 > 1:
            print ("Not an option")
        else:
            flip = False
            note_finder(input)


while flip == True:
    print ('# Type one of the following options:\n# 1 \n# Type "99" to exit the program')
    choice1 = int(input('--> '))
    if choice1 == 99:
        break
    elif choice1 < 1 or choice1 > 1:
        print ("Not an option")
    else:
        flip = False
        note_finder(input)

1 个答案:

答案 0 :(得分:2)

所以input()总是返回一个字符串。你可以在这里看到文档:

https://docs.python.org/3/library/functions.html#input

你能做的是这样的事情:

choice2 = input('--> ')

if choice2.isnumeric() and (int(choice2) == 99):
    break

这可以避免您键入check并捕获不重要的错误。

请参阅下文,了解isnumeric如何使用不同的数字类型:

In [12]: a='1'

In [13]: a.isnumeric()
Out[13]: True

In [14]: a='1.0'

In [15]: a.isnumeric()
Out[15]: False

In [16]: a='a'

In [17]: a.isnumeric()
Out[17]: False