为了账号安全,请及时绑定邮箱和手机立即绑定

计算一个 Python 程序以按字母顺序显示原始 13 个状态的以下输出

计算一个 Python 程序以按字母顺序显示原始 13 个状态的以下输出

慕桂英3389331 2022-06-22 15:25:22
该文件States.txt包含美国 50 个州加入工会的顺序。使用循环编写一个程序,for以按字母顺序显示原始 13 个状态的以下输出。文件 States.txt 中的内容:DelawarePennsylvaniaNew JerseyGeorgiaConnecticutMassachusettsMarylandSouth CarolinaNew HampshireVirginiaNew YorkNorth CarolinaRhode IslandVermontKentuckyTennesseeOhioLouisianaIndianaMississippiIllinoisAlabamaMaineMissouriArkansasMichiganFloridaTexasIowaWisconsinCaliforniaMinnesotaOregonKansasWest VirginiaNevadaNebraskaColoradoNorth DakotaSouth DakotaMontanaWashingtonIdahoWyomingUtahOklahomaNew MexicoArizonaAlaskaHawaii我目前的编码:infile = open("States.txt", 'r')states = [line.rstrip() for line in infile]states.sort()      # I sort those 50 states in alphabetical order firstfor state in states:    print("\r", states[6],"\n",states[7], "\n", states[9], "\n", states[19], "\n", states[20], "\n", states[28], "\n", states[29], "\n", states[31], "\n", states[32], "\n", states[37], "\n", states[38], "\n", states[39], "\n", states[45], end="")   #I locate exact position of those 13 states    breakinfile.close()虽然我可以使用上面的编码显示预期的输出,但这绝对不是利用for循环功能的好方法,因为我仍然可以在没有for循环语句的情况下显示确切的结果。程序的预期输出:(需要垂直显示13个状态)ConnecticutDelawareGeorgiaMarylandMassachusettsNew HampshireNew JerseyNew YorkNorth CarolinaPennsylvaniaRhode IslandSouth CarolinaVirginia
查看完整描述

5 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您可以在排序之前使用切片来获取前 13 个条目:states


infile = open("States.txt", 'r')

states = [line.rstrip() for line in infile]

original_states = states[:13]

original_states.sort()

for state in original_states:

    print(state)

infile.close()


查看完整回答
反对 回复 2022-06-22
?
偶然的你

TA贡献1841条经验 获得超3个赞

在对文件进行排序之前,您可以使用它itertools.islice来读取文件的前 13 行:


from itertools import islice

with open('States.txt') as infile:

    print(*sorted(islice(infile, 13)), sep='')


查看完整回答
反对 回复 2022-06-22
?
呼如林

TA贡献1798条经验 获得超3个赞

这是我对 stackoverflow 的第一个贡献,所以请放轻松。我想更多地参与并回馈社会,因为这个社区给了我很大的帮助。


有人可能可以更简化这一点,但这是我的解决方案:


filename="States.txt"

states= list()


with open (filename) as file:

    # convert to list of names 

    items = list(file.read().split())

从文件中生成州名列表。因为文件包含空格分隔的名称,您需要将一些名称放在一起:例如纽约


two_word_state_names=['New','North','South','West', 'Rhode']

skip=False


for idx,item in enumerate(items):

    if skip:

        skip=False

        continue

    elif item in two_word_state_names:

        states.append(str(items[idx] + " " + items[idx+1]))

        skip=True # skip the next loop because next item is the second word of the state

    else:

        states.append(item)

现在您可以排序并打印前十三个:


thirteen_states=states[:13]

thirteen_states.sort()


# Print result

for state in thirteen_states:

    print (state)

康涅狄格

特拉华州

乔治亚州

马里兰

马萨诸塞州

新罕布什尔

新泽西州

纽约

北卡罗来纳

宾夕法尼亚州

罗德岛

南卡罗来纳

弗吉尼亚


查看完整回答
反对 回复 2022-06-22
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您的原始问题将状态作为空格分隔的单词,这需要额外的逻辑来提取和表示两个单词的状态。使用您编辑的问题,它要简单得多:


with open ('States.txt') as file:

    states = list(file.read().split('\n')[:13])

    states.sort()


for state in states:

    print (state)

Connecticut

Delaware

Georgia

Maryland

Massachusetts

New Hampshire

New Jersey

New York

North Carolina

Pennsylvania

Rhode Island

South Carolina

Virginia


查看完整回答
反对 回复 2022-06-22
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

因此,如果第一个列表包含 50 个状态,并且您应该按排序顺序输出其中的 13 个,我想您可以创建一个包含 13 个关键状态的列表,并且在您的 for 循环中,您可以检查一个状态是否是其中之一,而且只有当真打印呢?



查看完整回答
反对 回复 2022-06-22
  • 5 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信