我一直试图让这段代码起作用:
ans2 = ans1;
ans2.area(); // 22;object assigns by reference, so when you call the function on second copy object then it like calling on the same object, thats why the same answer
它不起作用,我认为是因为 last_bits_repeat= "yes"
while last_bits_repeat== "yes":
try:
another_number_repeat= input("do you have another number to add??")
another_number_repeat= str(another_number_repeat)
except TypeError as e:
if not repeat:
print("You left this empty, please write something!")
last_bits_repeat= "yes"
else:
print("This is not empty, but invalid")
。
我的问题是我应该使用哪个例外来验证字符串?用户应输入“是”或“否”。
答案 0 :(得分:0)
它没有用,我认为是因为TypeError。
如果这是python2(使用from __future__ import print_function
),它不起作用,因为input
没有做到你期望它 - 也就是说它没有分配输入到another_number_repeat
变量的值使用raw_input
代替。
在python3中,输入很好,但它不会引发异常。
我的问题是我应该使用哪个例外来验证字符串? (another_number_repeat)如果我可以的话。
您不需要例外。试试这个:
def get_choice(prompt, choices):
valid = False
while not valid:
answer = raw_input(prompt).strip()
valid = answer in choices
return answer
answer = get_choice('do you have another number to add?', ['yes', 'no'])
我之前已将此代码用于整数,因此我认为它应该使用正确的异常。
如果要对任意输入(数字,文本,选项)使用相同的代码,正则表达式有助于避免繁琐的异常检查,并保持代码光滑:
import re
def get_input(prompt, regexp, convert=str):
valid = False
while not valid:
answer = raw_input(prompt).strip()
valid = re.match(regexp, answer)
return convert(answer)
get_input('add a number? (yes or no)', r'(yes)|(no)')
get_input('number?', r'^[0-9]*$', int)
答案 1 :(得分:0)
我通常在这些例外“弄清楚”问题中做了什么:
找出异常代码的示例代码:
last_bits_repeat= "yes"
while last_bits_repeat== "yes":
another_number_repeat= input("do you have another number to add??")
another_number_repeat= str(another_number_repeat)