python - (Python)验证有效,但变量保存第一个输入,而不是更正的输入
问题描述
我们的教授让我们做一个数字系统转换器。我目前正在进行二进制到十进制的转换。我们不允许使用会自动转换为任何数字系统的方法。
def base2():
validate_x = ('0','1')
x = int(input('Allowed numbers are "0-1", Enter your whole number: '))
y = str(x)
val = set(y)
s = {'0','1'}
if s == val or val == {'0'} or val == {'1'}:
pass
else:
base2()
return y
验证按原样工作,但每当它输出答案时,它表明第一个输入用于计算而不是更正的输入。
输出是:
Allowed numbers are "0-1", Enter your whole number: 6
Allowed numbers are "0-1", Enter your whole number: 5
Allowed numbers are "0-1", Enter your whole number: 1
The decimal value of 6 . 0 is 6.0
解决方案
您正在递归调用base2()
,因此当输入正确时,您只需返回并返回并返回,直到您到达第一次调用base2()
,然后将用户输入的号码返回给呼叫者(在本例中为 6)。更改您的代码,而不是递归调用base2()
,而是在一个循环中while
循环,直到您对输入感到满意:
def base2():
validate_x = ('0','1')
s = {'0','1'}
x = int(input('Allowed numbers are "0-1", Enter your whole number: '))
y = str(x)
val = set(y)
while not (s == val or val == {'0'} or val == {'1'}):
x = int(input('Allowed numbers are "0-1", Enter your whole number: '))
y = str(x)
val = set(y)
return y
推荐阅读
- node.js - Application Insights 无法跟踪节点中间件中的请求
- java - 具有可递增变量的 Spring 自定义 @Query
- git - 如何在 xampp htdocs 中使用 Github
- linux - 如何使 2 个带有 sql server 和 dotnet app 的容器相互通信?
- javascript - 按 ID 操作元素
- java - 带有 @EnableAspectJAutoProxy 的 @Autowired 对象的 Spring NullPointerException
- python - 如何在解析 Json 文件中的数据时仅获取 Python 脚本中所需的列
- c# - 当 ViewModel 改变时如何让 View 更新
- machine-learning - 如何对具有不同属性的多个相同值的数据进行一次热编码?
- python - django 测试 - 未创建模型实例