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) |
因此,可以在
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 |