- 此问题在此处已有答案**:
Asking the user for input until they give a valid response(22个答案)
3小时前关门了。
我不能得到代码要求2个不同的时间为同一个输入。
我想得到一个在列表[1,2,4,8,16]中的输入,但是所有类型的输入对程序来说都是"有效的"。如果第一个输入是错误的(不在列表中),我怎么才能再次请求相同的输入呢?这是我目前为止的代码:
d = int(input("¿Cuál quieres que sea el valor máximo de duración?\nTen en cuenta que el valor mínimo está definido y es la semicorchea.\n\nSemicorchea = 16\nCorchea = 8\nNegra = 4\nBlanca = 2\nRedonda = 1\n"))
if d == 16:
duraciones.append(0.25)
if d == 8:
duraciones.append(0.5)
if d == 4:
duraciones.append(0.5)
duraciones.append(1)
if d == 2:
duraciones.append(0.5)
duraciones.append(1)
duraciones.append(2)
if d == 1:
duraciones.append(0.5)
duraciones.append(1)
duraciones.append(2)
duraciones.append(4)
if d not in [16, 8, 4, 2, 1]:
int(input("Valor no válido. Debe ser uno de la siguiente lista:\n\nSemicorchea = 16\nCorchea = 8\nNegra = 4\nBlanca = 2\nRedonda = 1"))
(duraciones是另一个列表)
3条答案
按热度按时间slwdgvem1#
将第一行更改为:
编写这段代码还有其他方法,但这是与您已经编写的代码最接近的方法。
t1qtbnec2#
你要做的是在一个循环中问你的问题,直到你得到你想要的答案。在下面的例子中,我使用了一个
while
循环。因为看起来你真正想做的是填充duraciones
,所以它被传递到一个函数中,这样当给出正确的答案时,它就可以被修改。7eumitmz3#
你可以使用下面的代码。(抱歉我修剪了输入文本,因为它太大了)。我初始化了计数,这样你就不必输入第一个数字两次。希望它能有所帮助:)