2017-03-22 1 views
-4
def main(): 

    print("this program creates a file of usernames from a ") 
    print("files of names ") 
    # get the file names 

    infilename = input("what files are the name in") 
    outfilename = input("what file should the usernames go in") 
    # open the files 

    infile = open(infilename,'r') 
    outfile = open(outfilename,'w') 
    # process each line of the input file 
    for line in infile.readlines(): 
     # get the first and last names from line 
     first, last = line.split() 
     # create the username 
     uname = line.lower(first[0]+last[:7]) 
     # write it to the output file 
     outfile.write(uname+'\n') 
    # close both files 
    infile.close() 
    outfile.close() 

    print("usernames have been written to : ", outfilename) 

main() 

파일에서 이름과 성을 묶어서 사용자 이름을 인쇄하는 프로그램을 작성하려고합니다. 이름과 나머지 성. 예 : alexdougadoug입니다.lower() fuction이 인수를 취하지 않음

파이썬 인터프리터는 uname = line.lower(first[0]+last[:7])에 오류를 표시합니다.

TypeError lower() takes no arguments (1 given)

있는 방법이 오류 주위에 있는가 또는 그것을 할 수있는 다른 방법은 무엇입니까?

+5

line.lower (처음 [0] + 마지막 [: 7])의'line'은 실제로/do를 의미합니까? –

+0

나는 첫 번째 이름에서 첫 번째 문자를 가져 와서 색인 7까지 성을 얻고 싶습니다. 그래서 이름의 첫 번째 이름이 4이고 마지막 이름이 chan이면 결과는 fchan이됩니다 –

+2

예,하지만 그게 무슨 뜻인지 알 수 있습니다. 'first'와'last'를 사용하여,'line' 변수를 사용하는 것과는 다릅니다. 왜 그것이'line.lower (첫 번째 [0] + 마지막 [: 7]) '명령의 일부입니까? –

답변

0

하위 기능이 그렇게 작동하지 않습니다.

string1 = "ABCDEFG" 
string2 = string1.lower() 
print(string2) # prints abcdefg 
+0

@ShadowRanger가 편집 해 주셔서 고마워요, 파이썬 3인지 알지 못했습니다. – lordingtar

2

올바르게 작성의 관련 라인과 같습니다 :

uname = (first[0]+last[:7]).lower() 

... 또는, 더 자세하게는 파이썬에서 소문자로 텍스트를 변환하려면 다음을 수행해야합니다 : 입력 메소드가 호출되는 객체 같이

uname_unknown_case = first[0]+last[:7] 
uname = uname_unknown_case.lower() 

특히 문자열을 사용하는 단계; 오류 메시지가 말한 것처럼 다른 인수가 없습니다.

+0

잘 생각해주세요. –

관련 문제