为了账号安全,请及时绑定邮箱和手机立即绑定

(Python) 验证和输入适用于二进制,但不适用于其他基数系统

(Python) 验证和输入适用于二进制,但不适用于其他基数系统

喵喵时光机 2023-02-07 13:42:22
我是大学 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对于 base-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: 20Allowed numbers are "0-2", Enter your whole number: 111['1', '1', '1']The decimal value of    " 111 "   base- 3  is 13Allowed numbers are "0-2", Enter your whole number: 211Allowed numbers are "0-2", Enter your whole number: 210['2', '1', '0']The decimal value of    " 210 "   base- 3  is 21将不胜感激任何帮助 <3
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

使用以下条件:

while any(x not in s for x in val):

代替:

while not (s == val or val == {'0'} or val == {'1'} or val == {'2'})

当您转换为集合时,我们无法保证它的顺序,因为集合本身没有排序。因此,检查s == val可能并不总是如您所想的那样有效。此外,用户可以输入任意数字组合。


查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信