【发布时间】:2016-08-07 16:08:18
【问题描述】:
我必须在不使用列表排序方法的情况下对用户输入的名称进行排序。这是我到目前为止所拥有的,但在定义“一”、“二”和“三”时遇到了问题。我需要程序检查每个字母以确保它是真正按字母顺序排列的。谁能帮忙?
name1=str(input("Enter name #1: "))
name2=str(input("Enter name #2: "))
name3=str(input("Enter name #3: "))
one = name1[0].upper() + name1[1].upper() + name1[2].upper()
two = name2[0].upper() + name2[1].upper() + name2[2].upper()
three = name3[0].upper() + name3[1].upper() + name3[2].upper()
if one < two and two < three:
print("These names in alphabetical order are: ", name1, name2, name3)
elif one < two and three < two:
print("These names in alphabetical order are: ", name1, name3, name2)
elif two < three and three < one:
print("These names in alphabetical order are: ", name2, name3, name1)
elif two < one and one < three:
print("These names in alphabetical order are: ", name2, name1, name3)
elif three < two and two < one:
print("These names in alphabetical order are: ", name3, name2, name1)
else:
print("These names in alphabetical order are: ", name3, name1, name2)
提前致谢! edit 我的问题在于定义“一”、“二”和“三”,它需要遍历输入中的所有字母。现在它贯穿前三个字母,但如果我添加下一个字母并且只给出三个字母的名称,则会出错。如果我使用 len 函数,它会告诉我它是一个整数
【问题讨论】:
-
这闻起来像家庭作业。为什么不允许使用“列表排序”功能?你试过什么了?你遇到了什么问题。
-
有一个
isalpha方法可以测试一个字符串是否真的是按字母顺序排列的 -
one、two和three是干什么用的?为什么只比较前三个字母?此外,你可以做one = name1[:3].upper()或(可能更像你需要的)只是one = name1.upper()。而不是one < two and two < three,您可以使用one < two < three。 还有,从one < two and three < two,你怎么推断name1 < name3? -
@tobias_k 看起来应该是名字,中间名,姓氏,也许
-
@cricket_007 可能,但在所有三个名称上都缺少
split()。
标签: python alphabetical names