您好我写了一个程序,告诉我输入中是否有十六进制。
hexadecimal = ['0','1','2','3','4','5','6','7','8','9','a','A','b','B','c','C','d','D','e','E','f','F']
output = ''
for c in hexadecimal:
digit = input('Digit: ')
output += c.join(digit)
if digit == '':
print(output, 'is a valid hexadecimal string.')
break
elif digit not in hexadecimal:
print(digit, 'is not a valid hexadecimal digit.')
break
这个程序的完整代码有效,唯一的问题是当用户没有输入任何东西时我需要将它添加到我的代码中。
答案 0 :(得分:1)
在将其附加到output
之前使用另一个if语句:
if len(output) == 0 and len(digit) == 0:
print("input is blank")
这会检查用户之前没有输入任何内容并且当前没有输入任何内容,如果两者都为真,则告诉他们输入为空白。
答案 1 :(得分:0)
修改您的if
:
if digit == '':
if len(output)==0:
print('The input was blank')
break
else:
print(output, 'is a valid hexadecimal string.')
break
elif digit not in hexadecimal:
print(digit, 'is not a valid hexadecimal digit.')
break
答案 2 :(得分:0)
这样做:
hexadecimal = ['0','1','2','3','4','5','6','7','8','9','a','A','b','B','c','C','d','D','e','E','f','F']
digit = input('Digit: ')
while digit is not '':
if digit in hexadecimal:
print(digit, 'is a valid hexadecimal string.')
else:
print(digit, 'is not a valid hexadecimal digit.')
digit = input('Digit: ')
print('The input was blank')
最好使用构造,如果是十六进制数字(它检查提供的输入是否在给定列表中),而不是执行循环和插入制动器。
答案 3 :(得分:0)
另一种处理此问题的方法可能是使用string
模块和内置函数all()
和any()
。
如果输入的所有元素都为真(或输入为空),则all()
返回True
如果输入的任何元素是十六进制值,则any()
返回True
。
string.hexdigits
值为:'0123456789abcdefABCDEF'
<强>代码:强>
import string
digit = input('Digit: ')
if not digit:
print('The input was blank.')
elif all(c in string.hexdigits for c in digit):
print(digit, 'is a valid hexadecimal string.')
elif any(c in string.hexdigits for c in digit):
print(digit, 'there are hexadecimals in digit')
else:
print(digit, 'is not a hexadecimal string.')