【发布时间】:2019-04-14 17:45:39
【问题描述】:
我正在尝试为一项作业创建一个科学计算器。我正在寻找有关 python 语法的一些帮助,我认为我的设计和伪代码做得很好,但无论出于何种原因,python 都没有我的任何语法问题。这是我将二进制转换为十进制的代码。
我需要代码在输入无效时重新提示,但是当它确实重新提示时,它会陷入重新提示的循环中,不会给我任何出路。
def bintodec(var):
power = (len(var) + 1)
value = ' '
while True:
var = input('Give a number to convert from binary to decimal: ')
for x in range(len(var)):
if (ord(var[x]) == 49):
power -= 1
value += x * (2 ** power)
if (ord(var[x]) == 48):
power -= 1
value += x * (2 ** power)
if power == -1:
break
else:
boo = True
return value
非常感谢任何帮助!
【问题讨论】:
-
break语句只退出最里面的循环。有关重构代码以跳出外循环的方法,请参阅副本(上面的链接)。 -
您是否真的必须在这里使用
ord...如果您只使用for x in var: if x == '0'.... 等,代码会更具可读性...您也在做同样的事情0和1的操作,所以你不妨把它们放在同一个块中 -
Asking the user for input until they give a valid response 问题的答案应该有助于从用户那里获得输入。