鱼C论坛

 找回密码
 立即注册
查看: 4007|回复: 6

[已解决]一个英文的作业

[复制链接]
发表于 2022-12-4 18:07:00 | 显示全部楼层 |阅读模式
60鱼币
本帖最后由 帅哥小C啊 于 2022-12-6 11:02 编辑

最佳答案
2022-12-4 18:07:01
本帖最后由 lxping 于 2022-12-4 20:23 编辑

将代码文件和films.txt放在同一个文件夹里面,运行就可以了
  1. def loadFilms():
  2.     films = []
  3.     i = 0
  4.     with open("films.txt") as f:
  5.         print(f.read())     #打印films.txt的文件内容
  6.         f.seek(0)           #指针回到文件初始位置
  7.         for each in f.readlines():
  8.             i += 1
  9.             filmname = each.split(",")[1]
  10.             filmmark = float(each.split(",")[2])
  11.             filmlist = [i, filmname, filmmark]
  12.             films.append(filmlist)      #读取films.txt每一行后,按照格式添加到films列表中
  13.     return films

  14. def printFilms(films):
  15.     print(films)

  16. def addFilms(films):
  17.     for i in films:
  18.         i[0] += 1            #增加的film是放在最前面的,所以已在列表中的film的序号既rank要调整
  19.     filmrank = 1
  20.     filmname = input("Please input film name:")
  21.     filmmark = float(input("Please input film mark:"))
  22.     films.insert(0, [filmrank, filmname, filmmark])    #在列表第一个位置插入新增信息
  23.     return films

  24. def saveFilms(films):
  25.     with open("newfilms.txt", "w+") as n:   #创建新文件
  26.         for i in films:            
  27.             n.writelines(str(i[0]) + "," + i[1] + "," + str(i[2])+ "\n")    #每次读取一行,写入一行

  28. if __name__ == "__main__":         
  29.     films = loadFilms()
  30.     films = addFilms(films)
  31.     saveFilms(films)
  32.     printFilms(films)
复制代码
  1. = RESTART: C:/Users/Administrator/Desktop/python/homework/once a week/newfilms.py
  2. 1,The Shawshank Redemption,9.3
  3. 2,The Godfather,9.2
  4. 3,The Dark Knight,9.0
  5. Please input film name:Farewell My Concubine
  6. Please input film mark:9.6
  7. [[1, 'Farewell My Concubine', 9.6], [2, 'The Shawshank Redemption', 9.3], [3, 'The Godfather', 9.2], [4, 'The Dark Knight', 9.0]]
复制代码

最佳答案

查看完整内容

将代码文件和films.txt放在同一个文件夹里面,运行就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-4 18:07:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 lxping 于 2022-12-4 20:23 编辑

将代码文件和films.txt放在同一个文件夹里面,运行就可以了
  1. def loadFilms():
  2.     films = []
  3.     i = 0
  4.     with open("films.txt") as f:
  5.         print(f.read())     #打印films.txt的文件内容
  6.         f.seek(0)           #指针回到文件初始位置
  7.         for each in f.readlines():
  8.             i += 1
  9.             filmname = each.split(",")[1]
  10.             filmmark = float(each.split(",")[2])
  11.             filmlist = [i, filmname, filmmark]
  12.             films.append(filmlist)      #读取films.txt每一行后,按照格式添加到films列表中
  13.     return films

  14. def printFilms(films):
  15.     print(films)

  16. def addFilms(films):
  17.     for i in films:
  18.         i[0] += 1            #增加的film是放在最前面的,所以已在列表中的film的序号既rank要调整
  19.     filmrank = 1
  20.     filmname = input("Please input film name:")
  21.     filmmark = float(input("Please input film mark:"))
  22.     films.insert(0, [filmrank, filmname, filmmark])    #在列表第一个位置插入新增信息
  23.     return films

  24. def saveFilms(films):
  25.     with open("newfilms.txt", "w+") as n:   #创建新文件
  26.         for i in films:            
  27.             n.writelines(str(i[0]) + "," + i[1] + "," + str(i[2])+ "\n")    #每次读取一行,写入一行

  28. if __name__ == "__main__":         
  29.     films = loadFilms()
  30.     films = addFilms(films)
  31.     saveFilms(films)
  32.     printFilms(films)
复制代码
  1. = RESTART: C:/Users/Administrator/Desktop/python/homework/once a week/newfilms.py
  2. 1,The Shawshank Redemption,9.3
  3. 2,The Godfather,9.2
  4. 3,The Dark Knight,9.0
  5. Please input film name:Farewell My Concubine
  6. Please input film mark:9.6
  7. [[1, 'Farewell My Concubine', 9.6], [2, 'The Shawshank Redemption', 9.3], [3, 'The Godfather', 9.2], [4, 'The Dark Knight', 9.0]]
复制代码

newfilms.txt

105 Bytes, 下载次数: 0

films.txt

74 Bytes, 下载次数: 4

评分

参与人数 1鱼币 +1 收起 理由
hellometa + 1 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-4 20:27:33 | 显示全部楼层
本帖最后由 suchocolate 于 2022-12-4 20:28 编辑
  1. import csv


  2. def loadFilms():
  3.     films = []
  4.     with open('films.txt', 'r', encoding='utf-8') as csvfile:
  5.         reader = csv.reader(csvfile, delimiter=',')
  6.         for row in reader:
  7.             _lst = list(row)
  8.             _lst[2] = float(_lst[2])
  9.             films.append(_lst)
  10.     return films


  11. def printFilms(films):
  12.     for film in films:
  13.         print(f'Film {film[0]} - {film[1]} - {film[2]}')


  14. def addFilm(films):
  15.     film_name = input('Please input film name:')
  16.     film_mark = float(input('Please input film mark:'))
  17.     films.append([0, film_name, film_mark])


  18. def sortFilm(films):
  19.     films.sort(key=lambda x: x[2], reverse=True)
  20.     for i in range(len(films)):
  21.         films[i][0] = i + 1


  22. def saveFilms(films):
  23.     sortFilm(films)
  24.     print(films)
  25.     with open('newfilms.txt', 'w', encoding='utf-8', newline='') as csvfile:
  26.         writer = csv.writer(csvfile)
  27.         writer.writerows(films)


  28. if __name__ == "__main__":
  29.     film_list = loadFilms()
  30.     printFilms(film_list)
  31.     addFilm(film_list)
  32.     sortFilm(film_list)
  33.     saveFilms(film_list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-5 00:28:38 | 显示全部楼层
用 pandas 写写? ^_
  1. import pandas as pd
  2. # a) load the films into a database from the file (films.txt) and return it
  3. # films = loadFilms()
  4. def loadFilms():
  5.     df = pd.read_csv('films.txt', sep=',', header=None, index_col=0)
  6.     return df.to_numpy().tolist()

  7. films = loadFilms()
  8. print(films)

  9. # b) list all the films in the database
  10. # printFilms(films)
  11. def printFilms(films):
  12.     for i, row in enumerate(films, start=1):
  13.         row.insert(0, i)
  14.         print(','.join(map(str, row)))

  15. printFilms(films)  # films = loadFilms()

  16. # c) add a film to the database
  17. # films = addFilm(films)  ?? 为啥是复数?
  18. def addFilm(films=None):  # 增加"若干条电影信息"(二维列表)
  19.     if films is not None \
  20.         and isinstance(films, list) and isinstance(films[0], list):
  21.         return loadFilms() + films  
  22.     else:
  23.         pass

  24. films = addFilm(films=[["Farewell My Concubine", 9.6]])

  25. # d) save the films in a database to file (newfilms.txt)
  26. # saveFilms(films)
  27. def saveFilms(films):
  28.     df = pd.DataFrame(films)
  29.     df.columns = ['name', 'mark']
  30.     df.sort_values(by='mark', ascending=False, inplace=True)
  31.     df.index = range(1, len(df.index)+1)   # as the rank
  32.     df.to_csv('newfilms.txt', index=True, header=None)

  33. saveFilms(films=films)

  34. # Your program should follow the test case with same input and output.
  35. # ?? 难道要还有写 测试用例?
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-5 19:49:35 | 显示全部楼层
  1. import csv


  2. def loadFilms():
  3.     films = []
  4.     with open('films.txt', 'r', encoding='utf-8') as csvfile:
  5.         reader = csv.reader(csvfile, delimiter=',')
  6.         for row in reader:
  7.             _lst = list(row)
  8.             _lst[2] = float(_lst[2])
  9.             films.append(_lst)
  10.     return films


  11. def printFilms(films):
  12.     for film in films:
  13.         print(f'Film {film[0]} - {film[1]} - {film[2]}')


  14. def addFilm(films):
  15.     film_name = input('Please input film name:')
  16. film_mark = float(输入('请输入胶片标记:'))
  17. films.append([0, film_name, film_mark])


  18. def sortFilm(films):
  19. films.sort(key=lambda x: x[2], reverse=True)
  20. 对于范围内(镜头(胶片)):
  21. 电影[i][0] = i + 1


  22. def saveFilms(films):
  23. 排序电影(电影)
  24. 印刷(电影)
  25. 使用 open('newfilms.txt', 'w', encoding='utf-8', newline='') 作为 csvfile:
  26. writer = csv.writer(csvfile)
  27. 作家.编剧(电影)


  28. 如果__name__ == “__main__”:
  29. film_list = loadFilms()
  30. 印刷胶片(film_list)
  31. 添加电影(film_list)
  32. 排序电影(film_list)
  33. 保存电影(film_list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-6 09:46:55 | 显示全部楼层
谢谢大家了,问题基本上已经解决了。(奖励只能发一份嘛,我就给了最早回复的那位朋友了)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-14 22:48:42 | 显示全部楼层
前来学习。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 16:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表