在Python运行时追加列表

2024-09-29 02:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个项目,其中有两个列表。 一个列表是用户id,其中存储了用户的用户名。 另一个是用户评分存储用户评分的地方。 在用户名对应的索引处,存储用户评级。 如果有新用户,则在运行时动态追加列表。 代码如下:

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"]

如何克服这个问题?你知道吗


Tags: 用户inidids列表indexusername评分
3条回答

现在还不清楚您再次运行了代码的哪些部分,但似乎每次运行(3d和第4行)时都在重置您的用户ID和分级列表。因此,“权力”并没有被取代。与此相反,会创建一个新的毗湿奴列表,并在运行后将您的新输入添加到其中。你知道吗

这里没有循环。每次只需覆盖这些值。你知道吗

试试看:

A, B = [], []
while True:
    A.append(3.5)
    b = input('B value')
    if b == '':
        break
    B.append(b)
    print(A, B)

尝试在每次运行后将数据保存到磁盘,并在下次运行前读取if back:

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))

相关问题 更多 >