Básicamente, estoy escribiendo un programa en Python y una de las subrutinas que necesito es no repetir los apodos, así que lo que hice fue agregar todos los apodos en un archivo txt, luego quiero leer el archivo y asegurarme de que el apodo no sea lo mismo que los apodos en el archivo. Aquí está el código:

sAskNick = input ("What nickname would you like to proceed with?: ")

nicknames = open("nicknames.txt","a+")
aAllNicks = []

with open ("nicknames.txt") as f:
aAllNicks = f.read().splitlines()

for i in range(0,4):
    while sAskNick == aAllNicks[i]:
        print("Nickname used/inappropriate")

    else:
        print("Valid nickname")
        break

En esto, nicknames.txt solo contiene una lista de apodos en cada línea, hay 5 apodos en el archivo.

-1
Garje 19 oct. 2019 a las 01:50

1 respuesta

La mejor respuesta

Si quieres hacer algo cuando el apodo dado está en ese archivo:

given_nickname = input('What is your nickname?')

#Read the file:
nicknames = open(r'c:\filelocation','r').read().splitlines()

for element in range(len(nicknames)):
    if given_nickname in nicknames:
        print('{0} is in the nicknames list'.format(given_nickname))
    else:
        print('{0} is NOT in the list'.format(given_nickname))

Si desea editar el archivo de texto cada vez que ingresa algún apodo, puede usar lo siguiente para hacerlo. NOTA: Por supuesto, este caso funcionará si mantiene cada apodo en cada línea con un archivo de texto limpio:

#Read the file:
file_location = r'somepath'
read_file = open(file_location,'r').read().splitlines()
nicknames = list(read_file) #catch the file as a list, its an optional line for cleaner code

def edit_file(nickname,file_location):
    f = open(file_location,'a').write('\n{0}'.format(nickname)) # before adding each nickname,start a new line in the text file



while True:
    given_nickname = input('What is your nickname?')
    if given_nickname not in nicknames:
        print('Welcome {0}!'.format(given_nickname))
        edit_file(nickname = given_nickname,file_location = file_location)
        break # stop the execution

    else:
        print('Error! {0} already chosen!'.format(given_nickname))
        #looping over the while loop if nickname is taken


Hay muchas metas que puedes lograr con esta pregunta. Creo que uno de estos dos podría hacerlo.

0
Jim Erginbash 18 oct. 2019 a las 23:18