python 当第一个输入选项错误时,如何重新输入?[duplicate]

kxeu7u2r  于 2023-01-16  发布在  Python
关注(0)|答案(3)|浏览(138)
    • 此问题在此处已有答案**:

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是另一个列表)

slwdgvem

slwdgvem1#

将第一行更改为:

while True:
    d = int(input(.....))
    if d in [16, 8, 4, 2, 1]:
       break

编写这段代码还有其他方法,但这是与您已经编写的代码最接近的方法。

t1qtbnec

t1qtbnec2#

你要做的是在一个循环中问你的问题,直到你得到你想要的答案。在下面的例子中,我使用了一个while循环。因为看起来你真正想做的是填充duraciones,所以它被传递到一个函数中,这样当给出正确的答案时,它就可以被修改。

def ask_question(duraciones):
    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"))
    
    while d not in [16, 8, 4, 2, 1]:
        d = int(input("Valor no válido. Debe ser uno de la siguiente lista:\n\nSemicorchea = 16\nCorchea = 8\nNegra = 4\nBlanca = 2\nRedonda = 1"))

    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)
7eumitmz

7eumitmz3#

你可以使用下面的代码。(抱歉我修剪了输入文本,因为它太大了)。我初始化了计数,这样你就不必输入第一个数字两次。希望它能有所帮助:)

ct=0
    d = int(input())
    while d not in [16, 8, 4, 2, 1]:
    if ct!=0:
        d=int(input())
    ct=2
    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)

相关问题