Validating whether raw input is an integer and greater than zero simultaneously in Python
我正在尝试完成一个程序来确定一个数字是否是素数。我试图添加一段代码,验证用户输入是否同时是一个整数,如果是的话,验证它是否是一个正整数。我希望它同时检查这两个参数,就像以前一样,我让它先检查它是否为整数,然后检查数字是否为正数,但是如果有人在第二个参数上输入了一个字符串,则会导致错误。我的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import math def is_prime(integer): if integer < 2: return False elif integer == 2: return True elif not integer & 1: return False for x in range(3, int(integer**0.5) + 1, 2): if integer % x == 0: return False return True while True: value = input("Please enter a positive integer:") try: integer = int(value) if integer >= 0: break else: print("The integer must be positive, try again.") except ValueError: print("This is not an integer, try again.") if is_prime(integer) == False: print"%d is not a prime number." % integer if is_prime(integer) == True: print"%d is a prime number!" % integer |
我尝试使用while循环告诉用户他们的输入无效,然后再次请求输入。有什么想法吗?谢谢!
编辑:如果我输入一个字符串,我会得到以下内容:
1 2 3 4 5 6 7 | >>> python ex19.1.py Please enter a positive integer: abcd Traceback (most recent call last): File"ex19.1.py", line 16, in <module> value = input("Please enter a positive integer:") File"<string>", line 1, in <module> NameError: name 'abcd' is not defined |
号
您必须使用
使用原始输入(
1 2 3 | no = raw_input("Enter a positive integer number") if no.isdigit() and int(no) >= 0: print"positive no" |
使用输入()。
1 2 3 | no = input("Enter a positive integer number") if str(no).isdigit() and no >= 0: print"positive no" |
。
1 2 3 4 5 6 | if not value.isdigit(): print("This is not an integer, try again.") elif int(value) < 0: print("The integer must be positive, try again.") else: break |
可以使用函数
1 2 3 4 | >>> '123'.isdigit() True >>> '123qwe'.isdigit() False |
号