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

该文件States.txt包含美国 50 个州加入工会的顺序。使用循环编写一个程序,for以按字母顺序显示原始 13 个状态的以下输出。


文件 States.txt 中的内容:


Delaware

Pennsylvania

New Jersey

Georgia

Connecticut

Massachusetts

Maryland

South Carolina

New Hampshire

Virginia

New York

North Carolina

Rhode Island

Vermont

Kentucky

Tennessee

Ohio

Louisiana

Indiana

Mississippi

Illinois

Alabama

Maine

Missouri

Arkansas

Michigan

Florida

Texas

Iowa

Wisconsin

California

Minnesota

Oregon

Kansas

West Virginia

Nevada

Nebraska

Colorado

North Dakota

South Dakota

Montana

Washington

Idaho

Wyoming

Utah

Oklahoma

New Mexico

Arizona

Alaska

Hawaii

我目前的编码:


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

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

states.sort()      # I sort those 50 states in alphabetical order first

for 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

    break

infile.close()

虽然我可以使用上面的编码显示预期的输出,但这绝对不是利用for循环功能的好方法,因为我仍然可以在没有for循环语句的情况下显示确切的结果。


程序的预期输出:(需要垂直显示13个状态)


Connecticut

Delaware

Georgia

Maryland

Massachusetts

New Hampshire

New Jersey

New York

North Carolina

Pennsylvania

Rhode Island

South Carolina

Virginia


慕桂英3389331
浏览 128回答 5
5回答

慕桂英546537

您可以在排序之前使用切片来获取前 13 个条目:statesinfile = 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()

偶然的你

在对文件进行排序之前,您可以使用它itertools.islice来读取文件的前 13 行:from itertools import islicewith open('States.txt') as infile:    print(*sorted(islice(infile, 13)), sep='')

呼如林

这是我对 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=Falsefor 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 resultfor state in thirteen_states:    print (state)康涅狄格特拉华州乔治亚州马里兰马萨诸塞州新罕布什尔新泽西州纽约北卡罗来纳宾夕法尼亚州罗德岛南卡罗来纳弗吉尼亚

慕标琳琳

您的原始问题将状态作为空格分隔的单词,这需要额外的逻辑来提取和表示两个单词的状态。使用您编辑的问题,它要简单得多:with open ('States.txt') as file:    states = list(file.read().split('\n')[:13])    states.sort()for state in states:    print (state)ConnecticutDelawareGeorgiaMarylandMassachusettsNew HampshireNew JerseyNew YorkNorth CarolinaPennsylvaniaRhode IslandSouth CarolinaVirginia

阿波罗的战车

因此,如果第一个列表包含 50 个状态,并且您应该按排序顺序输出其中的 13 个,我想您可以创建一个包含 13 个关键状态的列表,并且在您的 for 循环中,您可以检查一个状态是否是其中之一,而且只有当真打印呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python