Asistente de cronometraje (pitón de la Copa Blue Bridge)

Descripción del problema
Dada la hora actual, léalo en inglés.
  El tiempo se expresa en horas hy minutos m. En la pronunciación inglesa, la forma de leer una hora es:
  si m es 0, lea la hora y luego agregue "o'clock". Por ejemplo, 3:00 se lee como "tres en punto".
  Si m no es 0, lea la hora y luego lea los minutos, como 5:30 como "cinco y media".
  La pronunciación de horas y minutos utiliza números en inglés, donde 0 ~ 20 se leen como:
  0: cero, 1: uno, 2: dos, 3: tres, 4: cuatro, 5: cinco, 6: seis, 7: siete, 8: ocho, 9: nueve, 10: diez, 11: once, 12: doce, 13: trece, 14: catorce, 15: quince, 16: dieciséis, 17: diecisiete, 18: dieciocho, 19: diecinueve, 20: veinte.
  30 se pronuncia como treinta, 40 como cuarenta y 50 como cincuenta.
  Para números mayores que 20 y menores que 60, primero lea el número diez entero y luego sume el dígito. Por ejemplo, la pronunciación de 31 primero lee 30 y luego agrega 1 para leer "treinta y uno".
  De acuerdo con la regla anterior, 21:54 se lee como "veintiuno cincuenta y cuatro", 9:07 se lee como "nueve siete" y 0:15 se lee como "cero quince".
La entrada de formato de
  entrada contiene dos números enteros no negativos h y m, que representan la hora y los minutos de la hora. No hay un 0 antes de un número distinto de cero. h es menor que 24 y m es menor que 60.
Formato de
  salida Hora y hora de salida en inglés.
Entrada de muestra
0 15
salida de muestra
cero quince

Pensando brevemente en
 esta pregunta, la primera idea que me viene a la mente es: utilice siempre oraciones de juicio para juzgar y generar estos dos números por separado. El código es más largo (se estima que el juicio más el resultado son unas doscientas líneas), pero la lógica y la gramática de la realización son muy simples.
Además, hay tipos de datos de diccionario que se pueden utilizar, lo que en realidad es mejor para este tipo de preguntas El blogger de repente recordó cuando estaba escribiendo un blog.
  Aquí usamos principalmente el juicio de condición if y el índice de lista para lograr. Consulte el código y los comentarios para obtener más detalles:

def baoshi(a,b):
    """报时"""
    x=['zero','one','two','three','four','five','six','seven','eight','nine','ten',
       'eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']
    y_1=['twenty','thirty','forty','fifty']
    y_2=['one','two','three','four','five','six','seven','eight','nine','eight','ten']
    if a <= 19:
        print(x[a],end=' ')  #直接从x列表取数 ,以下输出也是从对应列表取数
    if a == 20 or a == 30 or a ==40 or a==50:
        print(y_1[a//10-2],end=" ")
    if  20 <= a and a != 20 and a != 30 and a != 40 and a != 50:
        a_1=a//10-2  #将十位数取出,并对应列表y1相对的数
        a_2=a%10-1   #对应列表y2的数 
        print(y_1[a_1],y_2[a_2],end=" ")
    if b == 0 :
        print("o'clock")  #整点的情况
    elif 1 <= b <= 19:
        print(x[b],end=" ")  #直接从x列表取数  
    elif b == 20 or b == 30 or b == 40 or b == 50:
        print(y_1[b//10-2],end=" ")
    elif  20 <= b and b != 20 and b != 30 and b != 40 and b != 50:
        b_1=b//10-2
        b_2=b%10-1
        print(y_1[b_1],y_2[b_2],end=" ")
x = list(map(int,input().split()))  #输入数字入口
h = x[0]
m = x[1]
baoshi(h,m)

Si crees que es útil para ti, simplemente me gusta

Supongo que te gusta

Origin blog.csdn.net/qq_45701131/article/details/105826321
Recomendado
Clasificación