验证python中的用户输入字符串

validating user input string in python

这是一本书中的一些代码,从我刚接触到Python以来,我一直在研究这些代码……这部分工作得很正常。

1
2
3
4
5
6
7
8
9
10
11
12
13
totalCost = 0
print 'Welcome to the receipt program!'
while True:
    cost = raw_input("Enter the value for the seat ['q' to quit]:")
    if cost == 'q':
        break
    else:
        totalCost += int(cost)

print '*****'
print 'Total: $', totalCost
share|edit
answered 8 hours ago

我的难题是……我需要验证输入是什么……所以如果用户输入了一个字符串(如单词"5"而不是数字),而不是Q或数字,它会告诉他们"对不起,但是"5"无效。请再试一次…..然后它再次提示用户输入。我对python不熟悉,一直在为这个简单的问题绞尽脑汁。

*更新**因为我没有足够的学分来回答我自己的问题,所以我把这个贴在这里……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Thank you everyone for your help.  I got it to work!!!  I guess it's going to take me a little time to get use to loops using If/elif/else and while loops.

This is what I finally did

total = 0.0
print '
Welcome to the receipt program!'
while True:
    cost = raw_input("Enter the value for the seat ['
q' to quit]:")
    if cost == '
q':
        break
    elif not cost.isdigit():
        print"I'
m sorry, but {} isn't valid.".format(cost)
    else:
        total += float(cost)
print '
*****'
print '
Total: $', total

1
2
3
4
5
6
7
if cost == 'q':
    break
else:
    try:
        totalCost += int(cost)
    except ValueError:
        print"Invalid Input"

这将查看输入是否为整数,如果是,则将中断。如果不是,它将打印"无效输入"并返回原始输入。希望这有帮助:)


1
2
3
4
try:
    int(cost)
except ValueError:
    print"Not an integer"

我还建议使用:

1
if cost.lower() == 'q':

如果是大写的"Q",还是要退出。


1
2
3
4
5
6
7
if cost == 'q':
    break
else:
    try:
        totalCost += int(cost)
    except ValueError:
        print"Only Integers accepted"


您可以使用以下方法强制转换输入:

1
2
3
4
5
try:    
    float(q)
except:
    # Not a Number
    print"Error"

如果用户的输入只能是带点的整数,则可以使用q.isdigit()。


你已经走了大部分的路了。你有:

1
2
3
4
if cost == 'q':
    break
else:
    totalCost += int(cost)

因此,可以在if声明中添加另一个条款:

1
2
3
4
5
6
if cost == 'q':
    break
elif not cost.isdigit():
    print 'That is not a number; try again.'
else:
    totalCost += int(cost)

如何在python中检查字符串中是否有数值?涵盖这个特定的情况(检查字符串中的数值),并有指向其他类似问题的链接。


您可能需要检查它是否符合要求:

1
2
>>> '123'.isdigit()
True

所以应该是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
totalCost = 0
print 'Welcome to the receipt program!'
while True:
    cost = raw_input("Enter the value for the seat ['q' to quit]:")
    if cost == 'q':
        break
    elif cost.isdigit():
        totalCost += int(cost)
    else:
        print('please enter integers.')

print '*****'

print 'Total: $', totalCost