Python如何解释这种条件?

时间:2012-01-08 04:50:52

标签: python

我正在处理的问题解释如下:

  
    

2.1)编写一个程序,要求用户输入颜色。     如果颜色为黑色或白色,则输出“颜色为黑色或白色”。     如果它以字母“k”后面的字母开头,     输出“颜色以字母”k“后面的字母开头     字母“。(可选:考虑大写和非大写     话。注意:Unix和Python中字母表的顺序     是:符号,数字,大写字母,小写字母。)

  

以下是作者的解决方案:

#!/usr/bin/env python
#
# guess a color
#
answer = raw_input ("Please enter a color: ")

if (answer == "black") or (answer == "white"):
 print "The color was black or white."
elif answer >= "k":
  print "The color starts with a letter that comes after \"k\" in the alphabet."

这是我对这个问题的回答:

#!usr/bin/env python
#
#This program asks the user to input a color

color = raw_input("Please, enter a color, any color.")

if (color == "black") or (color == "white"):
 print "The color was black or white."

elif color[0] != "a" or "b" or "c" or "d" or "e" or "f" or "g" or "h" or "i" or "j" or "k":
 print "The color starts with a letter that comes after 'k' in the alphabet."

else:
 print "The color was niether black nor white."

我无法理解作者解决方案的工作原理,特别是用于识别“颜色是否以字母”k“后面的字母开头”。

Python如何使这项工作?

elif answer >= "k":

Python如何识别第一个字符,例如color [0]和超出k的字母范围?

4 个答案:

答案 0 :(得分:2)

因为通常,Python序列(包括字符串)为其元素实现lexicographical ordering。因此,如果第一个元素0与元素1相同,则比较第一个元素

但请注意,您的解决方案是错误的。它被解析为(color[0] != "a") or "b" or "c" or "d" or "e" or "f" or "g" or "h" or "i" or "j" or "k",仅在color[0] == 'a'时才为假。您正在寻找color[0] not in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')(您也不应该排除' k'),但使用>=只是一个更清洁的事情。

答案 1 :(得分:0)

想想单词在字典中的排序方式。字典中以K或更晚开头的每个单词都将在" k"之后。在字典里。这是python定义的基础

answer >= "k"如果答案是在" k"之后是真的。在字典中,这与以" k"开头相同。或稍后的信。

现在看起来根据描述你不想包含以K开头的单词。这表明作者的解决方案是巧妙的错误,因为它将包含以K开头的单词。

答案 2 :(得分:0)

您是否注意到按名称排序文件的结果?如果你对字符串进行排序,“k”出现在以“k”开头并且有其他字母(“k [az] +”)的任何字母之前,因此,任何字符串>= "k"都以“k”开头或者后面。

答案 3 :(得分:0)

在Python中,您可以使用==,!=,<,>,< =和> =。运算符来比较两个字符串。

for answer >= "k":

将字符串字母进行比较。

回答[0]> =“k”[0]等所有指数直到得出结论