为什么此错误陷阱无法正常工作?我想让它出现在某个地方,如果有人键入一个单词或一个大于1的数字,则会出现错误陷阱并重复该问题,直到您键入正确的相应输入为止。有什么建议么??
gnuplot -p tmp.plt
答案 0 :(得分:0)
您应该使用if
语句而不是while
循环来测试输入的长度。您也可以使用all(map('01'.__contains__, value))
测试字符串是否仅由'0'或'1'字符组成。然后,您可以使x
和y
成为变量名称的元组,并通过相同的代码进行迭代,以使用相同的逻辑来请求它们的值,并将该值分配为全局变量或a的值。字典。
for variable in 'x', 'y':
while True:
value = input('Enter 4 digits for %s (0 or 1): ' % variable)
if len(value) == 4 and all(map('01'.__contains__, value)):
globals()[variable] = value
break
print('Try Again. Remember 4 digits and only use binary 1 or 0')
print(x, y)
答案 1 :(得分:0)
我建议将您的代码放入函数中,以帮助将它们分成更小的部分,并使用正则表达式进行测试以查看是否存在1或0以外的字符。这是基于您提供的代码的建议(代码这是针对Python3 +的):
import re
def check_input(input_str):
# Regex for function, look for any single char not 1 or 0
regex = r"[^10]"
# Check if input is 4 bits
if len(input_str) != 4:
print('Sorry, input must only be 4 bits')
return False
# Check if characters are only 1 or 0
if re.search(regex, input_str):
print('Sorry, input must be composed of only 1s or 0s')
return False
return True
def get_binary_input():
good_input = False
input_str = ""
while not good_input:
input_str = input('Enter 4 digits for X(0 or 1): ')
good_input = check_input(input_str)
return input_str
def main():
binary_str = get_binary_input()
print('Got binary string: {}'.format(binary_str))
return
if __name__ == '__main__':
main()