我在python中写了一个记分板(我对这门语言很新)。基本上用户输入他们的名字,我希望程序读取文件以确定用户被分配到的号码。
如何在没有用户输入要写入的确切字符串的情况下添加用户号4,只有他们的名字。
非常感谢!
答案 0 :(得分:0)
我建议您重新考虑您的设计 - 您可能不需要文件中的行号,但是您可以只读取文件并查看有多少行。
如果您最终获得大量数据,则无法扩展。
>>> with open("data.txt") as f:
... l = list(f)
...
这会读取您的标题
>>> l
['Num Name Score\n', 'John Doe 3\n', 'Mitch 5\n', 'Jane 1\n']
>>> len(l)
4
因此len(l)-1
是最后一个数字,len(l)
是您需要的。
答案 1 :(得分:0)
获取行数的最简单方法是使用readlines()
x=open("scoreboard.txt", "r")
line=x.readlines()
lastlinenumber= len(line)-1
x.close()
with open('scoreboard.txt', 'a') as scoreboard: #FIle is opened for appending
username = input("Enter your name!")
scoreboard.write(str(lastlinenumber) + '. ' + str(username) + ": " + '\n')
scoreboard.close()
答案 2 :(得分:-1)
def add_user():
with open('scoreboard.txt', 'r') as scoreboard:
#Reads the file to get the numbering of the next player.
highest_num = 0
for line in scoreboard:
number = scoreboard.read(1)
num = 0
if number == '':
num == 1
else:
num = int(number)
if num > highest_num:
highest_num = num
highest_num += 1
with open('scoreboard.txt', 'a') as scoreboard: #FIle is opened for appending
username = input("Enter your name!")
scoreboard.write(str(highest_num) + '. ' + str(username) + ": " + '\n')
scoreboard.close()
谢谢你们,我明白了。这是我将新用户添加到列表的最终代码。