如果for循环中的项目有资本

时间:2017-05-03 09:34:26

标签: python python-3.x

第6行的以下代码的问题是,如果用户输入带有大写字母的星期几,它将返回false。即"星期二"。我希望这返回"(day.capitalize())"

day = input("Please enter a day of the week")

def verify_day(day):
    days_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    for x in days_list:
        if x == day or x.capitalize == day:
            return (day.capitalize())
        elif day not in days_list:
            return ("false")


print(verify_day(day))

6 个答案:

答案 0 :(得分:4)

if x == day.lower()

这样你就不必检查两个实例。你也可以说

if day.lower() in days_list

并保存循环

更清晰:

def verify_day(day):
    day_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    if day.lower() in day_list:
        return day.upper()
    else:
        return False

答案 1 :(得分:3)

如果所有元素都为真,则更加模糊的解决方案可以使用and返回最后一个已评估元素的技巧,否则当其中一个条件为false时,它将停止计算。

示例:

13 and 23返回23而不是True

False and 33返回False(它甚至不评估第二个元素)

所以你可以使用这个技巧并做:

return day.lower() in days_list and day.capitalize()

这将首先评估是否为day.lower() in days_list,如果您的日期不在列表中,则会使and短路并返回False。

否则它将返回第二个评估条件,即day.capitalize()

答案 2 :(得分:2)

您可以在比较前删除所有大写字母:

import string
day = input("Please enter a day of the week")

def verify_day(day):
    days_list =["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    for x in days_list:

        if x == day.lowercase: # <----- this would accepte any capitalization of the input

            return (day.capitalize())
        elif day not in days_list:
        return ("false")

顺便说一句,您不必在列表上进行迭代,只需检查:

    def verify_day(day):
        days_list =["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
        if day.lowercase() in days_list :
            return (day)
        else :
            return ("false")

答案 3 :(得分:0)

您可以从比较中忽略大小写。

参考this问题。

day = day.rstrip().lower()
if x == day
  return (day.capitalize())
elif day not in days_list:
  return ("false")

答案 4 :(得分:0)

您应首先降低日期输入以进行检查,然后将其大写为返回值。

day = input("Please enter a day of the week")
def verify_day(day):
  days_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
  if day.lower() in days_list:
      return day.capitalize()
  else:
      return False

答案 5 :(得分:0)

始终将day.lower()与您的data_list项目进行比较,并且通过执行此用户收到返回日期将获得他/她输入的任何日期值(即星期一或星期一)。

day = input("Please enter a day of the week")

def verify_day(day):

days_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]

for x in days_list:
    if x == day.lower():
        return (day)
    elif day not in days_list:
        return ("false")


print(verify_day(day))