如何使程序区分1-13 INSIDE一个raw_input

时间:2014-11-01 00:52:47

标签: python

您好,这是我的代码:

def function():
    n1=1
    n2=2
    n3=3
    n4=4
    n5=5
    n6=6
    n7=7
    n8=8
    n9=9
    n10=10
    n11=11
    n12=12
    n13=13
    n = raw_input("Number (with optional text): ")
    if n1 or n2 or n3 or n4 or n5 or n6 or n7 or n8 or n9 in n:
        print "Not what I want"
    elif n12 or n13 in n:
        print "Dis I want"

function()

我试图让raw_input条件接受我放了13(因为它检测到输入在消息中有1或3)但我只是不能(请,我知道我可以在列表中创建一个范围,然后它接受我将每个数字分开,但它是我正在处理的另一个程序的代码的一部分,用户可以在其中输入他们想要的单词,如只要输入这些数字,但它就不会区分1或11。希望你能帮忙:)。

3 个答案:

答案 0 :(得分:1)

if '12' in n or '13' in n:
    print 'OK'
else:
    print 'wrong'

如果在允许的集合中有更多元素,最好使用any()进行理解:

if any(str(x) in n for x in range(1, 14)):
    print 'found number from range 1-13 in this string'

答案 1 :(得分:0)

你有2个错误,首先是raw_input返回字符串,你需要把它变成一个int。也正如@karthikr指出你的逻辑有点偏。

n = raw_input("Number (with optional text): ")
k = int(n)  
if k in [n1, n2, n3]:
    print "Not what I want"
elif k in [n12, n13]:
    print "Dis I want"

答案 2 :(得分:0)

由于OP显然想要从raw_input中获取数字,我认为如果使用in作为条件检查,则存在逻辑问题,例如,您想要“blah blah 9 blah”来检查9是在1-13之内,但是使用in将使这个“blah blah 999 blah”在1到13之间传递 9 的条件,因为if "9" in n已经返回{{ 1}}。我认为这不是OP想要的结果。

所以,我建议使用Truere获取第一个号码并进行检查。像这样:

raw_input

用法:

import re


def check_number_ok():
    n1, n2, n3, ... = 1, 2, 3, ... # you can assign n1 to n13 like this too
    n = raw_input("Number (with optional text): ")
    check_number = re.compile('\d+')
    check_result = check_number.search(n)
    if check_result is not None:
        first_number = int(check_result.group())
        if first_number == n1:
            # do something here
        elif first_number == n2:
            # do another thing
        # ... check if any others match
        else:
            print "Not what I want"
            return
            # do exit thing here so below code will not run
        # if code runs here which means it passes the check
        print "Dis I want"
    else:
        print "Please at least enter something with a number"