我正在编写代码,询问用户是否有任何正整数。如果用户输入的内容不是正整数,则它不能接受它并一次又一次地要求用户输入正整数,直到用户输入正整数。
其次,代码要求用户在0和1之间浮动,然后检查用户输入的是否是介于0和1之间的浮点数。如果它不在0和1之间,则必须再次询问,并再次询问用户输入了要求的内容。然后将其四舍五入到最近的2位小数位。
这是我的代码:
num1 = int(input("Enter a positive integer: "))
while num1 < 0 or not isinstance(num1 , int):
print("Invalid!")
num1 = int(input("Enter a positive integer: "))
num2 = float(input("Enter a decimal between 0 and 1: "))
while num2 < 0 or num2 > 1 or not isinstance(num2 , float):
print("Invalid!")
num2 = float(input("Enter a decimal between 0 and 1: "))
当我运行它并输入一个字符串时,它表示ValueError。
我是否必须使用错误处理?
答案 0 :(得分:1)
int
和float
构造函数抛出了ValueError。
while True:
try:
num1 = int(input("Enter a positive integer: "))
if num1 >= 0:
break
except ValueError:
pass
print("Invalid!")
while True:
try:
num2 = float(input("Enter a decimal between 0 and 1: "))
if num2 >= 0 and num2 <= 1:
break
except ValueError:
pass
print("Invalid!")
答案 1 :(得分:0)
如果您尝试按以下方式转换字符串:
>>> text = int("Blibla")
python解释器无法处理它。
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
text = int("Blibla")
ValueError: invalid literal for int() with base 10: 'Blibla'
>>>
请尝试使用try / except来捕获任何ValueErrors:
num1 = 'error'
while not isinstance(num1,int) and num1 == 'error':
try:
num1 = int(input("Enter a positive integer: "))
print("You input : {}".format(num1))
except ValueError:
print("Invalid!")