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()
答案 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):