这是一个用python 3.7编写的计算器,它可以正常工作,但是我只想做一点改进,所以我会问你,从第0行到第6行,我做了一个def hamming(n: Int): Seq[BigInt] = {
@tailrec
def next(x: Int, factor: Int, xs: IndexedSeq[BigInt]): Int = {
val leq = factor * xs(x) <= xs.last
if (leq) next(x + 1, factor, xs)
else x
}
@tailrec
def loop(i: Int, j: Int, k: Int, xs: IndexedSeq[BigInt]): IndexedSeq[BigInt] = {
if (xs.size < n) {
val a = next(i, 2, xs)
val b = next(j, 3, xs)
val c = next(k, 5, xs)
val m = Seq(2 * xs(a), 3 * xs(b), 5 * xs(c)).min
val x = a + (if (2 * xs(a) == m) 1 else 0)
val y = b + (if (3 * xs(b) == m) 1 else 0)
val z = c + (if (5 * xs(c) == m) 1 else 0)
loop(x, y, z, xs :+ m)
} else xs
}
loop(0, 0, 0, IndexedSeq(BigInt(1)))
}
块,并将其循环try except
。这将使此计算器的用户注意到“您输入的数字无效”。尽管它可以根据命令的结果正常运行,但是为了简单起见,我想让计算机在用户第一次输入无效数字后仅再次说“ enter_first_number”。所以我想摆脱“ invalid_number”。我可以只键入while True
而不是print()
,但是我不喜欢它由that产生的空白。谁能解决这个问题?
代码:
print(invalid_number)
答案 0 :(得分:0)
所以我想摆脱“无效编号”。
将except
内的打印语句替换为pass
,什么都不做。
while True:
try:
num1 = float(input("enter_first_number_&_press_enter: "))
break
except ValueError:
pass
答案 1 :(得分:0)
尝试用pass
替换打印语句。
例如:
try:
num1 = float(input("enter_first_number_&_press_enter: "))
break
except ValueError:
pass
pass
命令告诉python不做任何事情即可继续运行。
否则,将打印语句替换为print('', end='')
将打印出一个空字符串,结尾没有换行符。