Python-如何将整数附加到字符串中

问题描述 投票:-1回答:1

我想显示一个副牌并输出卡数。

以下是卡片:旁注:中间的是力量,最后的是那个名字的牌数。

Admiral,30,1
General,25,1
Colonel,20,2
Major,15,2
Captain,10,2
Lieutenant,7,2
Sergeant,5,4
Corporal,3,6
Private,1,10

数字代表代表该名称的卡片数量。我希望它使用append打印以下内容。我知道我想使用for循环将等级列添加到甲板上,但是我不确定如何编写代码。

输出应该是:

['Admiral', 'General', 'Colonel', 'Colonel', 'Major', 'Major', 'Captain', 'Captain', 'Lieutenant', 'Lieutenant', 'Sergeant', 'Sergeant', 'Sergeant', 'Sergeant', 'Corporal', 'Corporal', 'Corporal', 'Corporal', 'Corporal', 'Corporal', 'Private', 'Private', 'Private', 'Private', 'Private', 'Private', 'Private', 'Private', 'Private', 'Private']
There are 30 cards in the deck.

我的代码在这里:

while True: 
    text = rankFile.readline()
    #rstrip removes the newline character read at the end of the line
    text = text.rstrip("\n")     
    if text=="": 
        break
    data = text.split(",")
    rankList.append(data[0])
    powerList.append(int(data[1]))
    numberList.append(int(data[2]))

    for i in range(0, len(rankList)): 
        rankList.append(numberList[i])  # this wont work since number is an integer but how can I modifiy this... 

rankFile.close() 

print(50*"=") 
print("\t\tLevel 3 Deck") 
print(50*"=") 
print (rankList) 
print (powerList) 
print (numberList) 
python list for-loop append
1个回答
0
投票

一些注意事项:

1)“ while True”始终是一个不好的信号。风险很大,必须有更好的方法。

2)熟悉.strip()和.split()的工作方式是一个好主意。如果使用得当,它们可以很好地处理文件。

3)使用列表理解。 Python应该易于阅读且外观简单。

4)充分了解内置函数。 map(),zip(),sum(),open()等。

这里是一些读取文件的示例代码,假设您将其称为“ temp”,并且其中包含您在上面提供的表。

header,bar,*lines = open('temp').readlines()
data              = [line.strip().split() for line in lines if line.strip()]
rank,power,number = zip(*data)
cards             = sum([[r]*n for r,n in zip(rank,map(int,number))],[])

print(cards)
© www.soinside.com 2019 - 2024. All rights reserved.