我是一名IT专业的大一学生,我们的教授要求我们做一个数字系统转换器。我们不允许使用任何会自动转换为数字系统的方法。
我使用以下代码来验证二进制输入:
def base2():
s = {'0','1'}
y = input('Allowed numbers are "0-1", Enter your whole number: ')
val = set(y)
while not (s == val or val == {'0'} or val == {'1'}):
y = input('Allowed numbers are "0-1", Enter your whole number: ')
val = set(y)
return y对于基数2以上的另一个数字系统,我只是添加了缺少的验证。
以base-3为例:
def base3():
s = {'0','1','2'}
y = input('Allowed numbers are "0-2", Enter your whole number: ')
val = set(y)
while not (s == val or val == {'0'} or val == {'1'} or val == {'2'}):
y = input('Allowed numbers are "0-2", Enter your whole number: ')
val = set(y)
return y我只是在每个验证的末尾添加了一些。但由于某些原因,它需要所有数字或允许的数字之一的重复才能进行验证。
输入/输出:
Allowed numbers are "0-2", Enter your whole number: 20
Allowed numbers are "0-2", Enter your whole number: 111
['1', '1', '1']
The decimal value of " 111 " base- 3 is 13
Allowed numbers are "0-2", Enter your whole number: 211
Allowed numbers are "0-2", Enter your whole number: 210
['2', '1', '0']
The decimal value of " 210 " base- 3 is 21将感谢任何形式的帮助<3
发布于 2020-06-28 17:02:44
使用以下条件:
while any(x not in s for x in val):而不是:
while not (s == val or val == {'0'} or val == {'1'} or val == {'2'})当您转换为set时,我们不能保证它的顺序,因为set本身是无序的。因此,检查s == val可能并不总是如您所想的那样工作。此外,用户可以输入数字的任意组合。
https://stackoverflow.com/questions/62620228
复制相似问题