检查列表是否只有字母。蟒蛇

时间:2015-06-12 15:31:57

标签: python list function while-loop

你能帮忙解决下面的代码吗?我似乎无法让它运行。我是python的新手,所以会很感激一些技巧。另外,有没有办法检查列表中是否只有字母?

import random

x = random.choice([9, 10])

def loop():
    if x < 10 :
        print "Your current ticket number is %d " % x
    elif x >= 10 :
        main()

def main():
    print "Your current ticket number is %d and will be processed later. Please enter you're name and surname:" % x
    while True:
        try:
            s = raw_input('> ')
            return s.split('')
            if s.isalpha():
                name = s[0]
                surname = s[-1]
                print "Thank you, %s %s, you will be contacted soon" % (name, surname)
        except ValueError:
            print "Numbers are not accepted"
        if not tryAgain():
            break

def tryAgain():
    s = raw_input('Try again (Y/n)? ') 
    return 'yes'.startswith(s) or 'y'.startswith(s)

loop()

2 个答案:

答案 0 :(得分:0)

您正在输入带空格的字符串(&#34;最后一个&#34;),isalpha()标记为非字母字符。

试试这个:

s = raw_input('> ')
names = s.split()
good_input = True
for name in names:
    if not name.isalpha():
        good_input = False
        break

您需要按空格分割,然后检查每个字符串(不包含空格)。 string.split()将在没有参数的情况下执行此操作。

获得&#39; good_input&#39;的标志后,您可以使用它来做任何您喜欢的事情。

答案 1 :(得分:0)

你有几个问题:

return s.split('')

以上行生成ValueError,因为空字符串不是有效的分隔符。为什么return?即使您修复了分隔符,您也永远无法访问其余代码。 try隐藏了编码错误,因为它恰好返回ValueError

相反,请使用:

s = s.split()

这将返回名称列表。但是,您无法在列表中使用.isalpha(),因此请使用:

if all(n.isalpha() for n in s):