求1到10之间的整数的倒数



所以我需要编写一个程序,请求从1到10的整数并计算其倒数。

while True:
try:
integer = int(input("Enter an integer between 1 to 10 "))
parameter = integer in range(1,10)

equation = 1/integer
print(equation)
break 
except ValueError:
print("not int")

您可以使用assert检查数字是否在1到10的范围内。此外,在我看来,你不应该使用break,因为你想永远得到整数。:

while True:
try:
integer = int(input("Enter an integer between 1 to 10 "))
parameter = integer in range(1,10)

assert parameter # asserts the condition and checks if its True or False
equation = 1/integer
print(equation)
except ValueError:
print("not int")

except AssertionError: # if assertion is False then an AssertionError is raised
print("not between 1-10")

输出:

Enter an integer between 1 to 10 12
not between 1-10
Enter an integer between 1 to 10 2
0.5
Enter an integer between 1 to 10 val
not int

假设OP不考虑try/,除非违反不使用任何"条件结构"的要求;然后:

try:
integer = int(input("Enter an integer between 1 to 10: "))
1 / (integer in range(1, 11))
print(1 / integer)
except (ValueError, ZeroDivisionError):
print('Input not an integer in specified range')

由于bool值是整数:

>>> a = -1
>>> a = (0, a)[a in range(1, 11)]
>>> try:
...     print(1 / a)
... except ZeroDivisionError:
...     print('not in 1 to 10')
...
not in 1 to 10

所以你的问题可以这样解决:

while True:
try:
integer = int(input("Enter an integer between 1 to 10 "))
integer = (0, integer)[integer in range(1, 11)]
print(1 / integer)
except ValueError:
print("not int")
except ZeroDivisionError:
print("not between 1 to 10")

你真的很接近!唯一需要改变的是输出的格式,尝试这样做:

while True:
try:
integer = int(input("Enter an integer between 1 to 10 "))
parameter = integer in range(1, 10)
equation = 1 / integer
print("The reciprocal of " + str(integer) + " is 1/" + str(integer) + " or " + str(1/integer))
break
except ValueError:
print("Not an integer, please try again.")

最新更新