Estoy tratando de esa función que sigue solicitando palabras al usuario hasta que presionan regresar. En ese punto, el programa debería devolver el número de palabras mayúsculas ingresadas por el usuario.

Lo que tengo hasta ahora.

def upper():
    while True:
        x = input('Please enter word: ')
        if x.strip() == "":
            break
    print(len(x.split()))
upper()

¿Cómo exactamente contaría para las letras mayúsculas cada vez que se repite? Intenté print (len (x.split ())) pero eso solo devuelve cero para la última iteración.

-------------------------------editar

def upper():
    while True:
        x = input('Please enter word: ')
        if x.strip() == "":
            break
    capitalLetters = 0
    for letter in x:
        if letter.isupper():
            capitalLetters += 1
    upper()
0
DA_F 10 may. 2016 a las 05:13

3 respuestas

La mejor respuesta

Esta solución crea una lista de comprensión de las letras que son mayúsculas y luego obtiene la longitud de esa lista

capitalLetters = len([letter for letter in x if letter.isupper()])
print(capitalLetters)

También puede usar un ciclo regular para y recorrer cada letra y verificar si es mayúscula, luego incremente una variable:

capitalLetters = 0
for letter in word:
    if letter.isupper():
        capitalLetters += 1

Para su código

def upper():
    while True:
        x = input('Please enter word: ')
        if x.strip() == "":
            break
        capitalLetters = 0
        for letter in x:
            if letter.isupper():
                capitalLetters += 1
        print(capitalLetters)
upper()
1
Keatinge 10 may. 2016 a las 02:37

La idea es la siguiente:

count=0
countTotal=0
for c in x:
    if c >= 'A' and c <= 'Z':
        count++
countTotal += count

Debe realizar el recuento de cada palabra ingresada y luego mantener una variable countTotal para acumular todas las palabras mayúsculas.

1
mhyst 10 may. 2016 a las 02:28

Aquí tienes amiga

numUppers = lambda s: sum(map(lambda c: 65 <= ord(c) <= 90, s))
2
a p 10 may. 2016 a las 02:20