我必须为一小部分功课创建一个计算器,我要求输入数字和将使用的符号:
number1=int(input("\nWhat is your first number?"))
number2=int(input("\nWhat is your second number?"))
symbol=input("\nWhat is the symbol you will use?")
我想知道是否有任何方式我可以再次询问int(input())
是否输入除整数之外的任何内容。
我对Python atm并不是很好,所以如果我错过了一些明显的东西,那么道歉。 如果这个帖子是重复的,也很抱歉。
答案 0 :(得分:1)
python中的规范方法类似于:
def get_integer_or_retry(mesg)
while True:
val = input(mesg) # or raw_input for python 2
try:
val = int(val)
return val
except ValueError: #trying to cast string as int failed
pass # or you could let the user know their input was invalid
请注意,如果用户输入1.0(或其他一些也是整数的小数),这仍然会抛出ValueError(感谢Robᵩ);如果你需要处理恰好是整数的浮点数,你可以做val = int(float(val))
,但这也会接受(并默默地向下舍入)浮动数字......
答案 1 :(得分:0)
要知道变量类型do type(var)
。
所以,基本上你需要做的是:
if type(variable)==int:
do_something
答案 2 :(得分:0)
尝试isinstance方法(https://docs.python.org/3/library/functions.html#isinstance)
>>> isinstance(5, int)
True
>>> isinstance("a", int)
False
在你的情况下写一个条件,比如,
if isinstance(number1, int):
#do something
建议使用isinstance()内置函数来测试类型 一个对象,因为它考虑了子类。
答案 3 :(得分:0)
我将为这个答案假设Python 2.7。
我建议首先使用func map(_ array: [Int], _ transform: Int -> Int) -> [Int] {
var result = [Int]()
for element in array {
result.append(transform(element))
}
return result
}
// map can be used with other functions
// and also closures which are functions
// without a name and can be created "on the fly"
func addByOne(i: Int) -> Int {
return i + 1
}
func square(i: Int) -> Int {
return i * i
}
map([1,2,3], addByOne) // [2,3,4]
map([1,2,3], square) // [1,4,9]
// and so on...
// with closures
map([1,2,3]) { $0 + 1 } // [2,3,4]
map([1,2,3]) { $0 * $0 } // [1,4,9]
将字符串作为字符串输入
然后尝试将其转换为整数。 Python会提出一个
异常,如果转换失败,您可以捕获并提示
用户再试一次。
以下是一个例子:
raw_input
这是一个示例执行,带有输入:
while True:
try:
s1 = raw_input('Enter integer: ')
n1 = int(s1)
# if we get here, conversion succeeded
break
except ValueError:
print('"%s" is not an integer' % s1)
print('integer doubled is %d' % (2*n1))
在Python 3上,您需要使用$ python 33107568.py
Enter integer: foo
"foo" is not an integer
Enter integer: 1.1
"1.1" is not an integer
Enter integer: 0x23123
"0x23123" is not an integer
Enter integer: 123
integer doubled is 246
而不是input
;在
Python 2,raw_input
将用户输入评估为Python表达式,
这很少是我们想要的。