python - 在 Python 中在运行时附加列表
问题描述
我正在创建一个项目,其中有两个列表。一个列表是user_ids,其中存储了用户的用户名。另一个是存储用户评分的user_ratings 。在相应的索引处,存储用户评分。如果有新用户,列表会在运行时动态附加。这是代码:
print("Welcome to Movie Predictor")
print("Enter your user id: ")
user_ids=["Vishnu"]
user_ratings=[3.5]
username=input()
print("Signing in...Please Wait!")
if username in user_ids:
user_index=user_ids.index(username)
avg_rating=user_ratings[user_index]
new_user=0
else:
user_ids.append(username)
user_ratings.append(3.5)
avg_rating=3.5
new_user=1
在我第一次运行程序后,我输入了一个列表中没有的用户名,这里是数组。
user_ids=["Vishnu","Power"]
user_ratings=["3.5","3.5"]
但这就是问题所在。下次我再次运行它时,我的最后一个元素"Power"
将被替换,但列表中没有附加一个新项目。
这是第二次运行后的列表:
user_ids=["Vishnu","Ranger"]
user_ratings=["3.5","3.5"]
如何克服这个问题?
解决方案
每次运行后尝试将数据保存到磁盘,并在下次运行前读取数据:
import os.path
if not os.path.exists("mydatabase.txt"):
# initialize
user_ids=["Vishnu"]
user_ratings=[3.5]
else:
# read previous data from database file
user_ids=[]
user_ratings=[]
with open("mydatabase.txt", "r") as databasefile:
for line in databasefile:
userid, rating_str = line.split()
rating = float(rating_str)
user_ids.append(userid)
user_ratings.append(rating)
print("Welcome to Movie Predictor")
print("Enter your user id: ")
username=input()
print("Signing in...Please Wait!")
if username in user_ids:
user_index=user_ids.index(username)
avg_rating=user_ratings[user_index]
new_user=0
else:
user_ids.append(username)
user_ratings.append(3.5)
avg_rating=3.5
new_user=1
print("Current user ids: %s" % user_ids)
print("Current user ratings: %s" % user_ratings)
# write data to database file
with open("mydatabase.txt", "w") as databasefile:
for userid, rating in zip(user_ids, user_ratings):
databasefile.write("%s %.1f\n" % (userid, rating))
推荐阅读
- python - 盈透证券 - 未找到请求的安全定义
- amazon-web-services - 从 Secrets Manager 映射 AWS API Gateway HTTPIntegration 标头
- qt - 分配给已经在 QML 中定义的绑定的属性是否合法
- python-3.x - Python从简单图像中提取数字
- javascript - 如何在反应和提取数据中向制表器添加行
- angular - 全局图标库已弃用。FortAwesome/angular-fontawesome
- google-apps-script - 如何编写 Google 高级服务脚本
- javascript - JS 更改 ID 属性仅更改连续第一条记录上的 ID
- testing - 断言动态类 Tescafe 和 vue-virtual-scroll-list
- amazon-sns - 将 SSM 值转换为数字