在字符串中找到大写字母。没有循环。仅当python中的语句和字符串方法

在字符串中找到大写字母。没有循环。仅当python中的语句和字符串方法,python,string,Python,String,标题中的问题。我必须能够确定原始输入语句中是否有资本。我不能使用循环。仅使用if和string方法。如果将仅包含小写字母的字符串转换为小写字母,它将匹配自身。因此,下面将为大写字符串提供TRUE mystring.lower() != mystring 虽然发动机罩下的过滤器将是一个回路结构 也许。。。或 set(my_string) - set(my_string.lower()) 到set的转换还在我的字符串中的所有字母上循环(至少我认为)没有循环-使用递归 has_capital =

标题中的问题。我必须能够确定原始输入语句中是否有资本。我不能使用循环。仅使用if和string方法。

如果将仅包含小写字母的字符串转换为小写字母,它将匹配自身。因此,下面将为大写字符串提供TRUE

mystring.lower() != mystring
虽然发动机罩下的过滤器将是一个回路结构

也许。。。或

set(my_string) - set(my_string.lower())

到set的转换还在我的字符串中的所有字母上循环(至少我认为)

没有循环-使用递归

has_capital = lambda s:s[0].isupper() or has_capital(s[1:]) if s else False

使用集合相交运算符

import string
if set(raw_input()) & set(string.ascii_uppercase):
  # hello

字符串上有任何约束吗?它能包含空格吗?它能包含数字吗?其他角色?是否保证为ascii码?欢迎使用Stackoverflow。我们不是一个“做我的家庭作业”的论坛。请发布一个格式良好的问题以及您试图解决的问题,这样我们可以帮助您如果有大写字母,这将是错误的,听起来与问题相反。“不过,这个主意很聪明。”斯科特伦特说得对。事实上,
有_upper=mystring.lower()mystring绝对是我能想到的最有效的方法。虽然我同意你们提到的观点,但问题是“找到资本”。对我来说,这意味着“在输入中返回一个大写字符”。这就是为什么“无循环”条件让我感到困惑(列表理解在本练习中是否被视为循环?@inspectorG4dget,有人可能会说
str.lower()
也是循环。@gnibbler:touche!我没有想到那个好方法:)绕过循环问题的方法……函数式程序员会感到自豪:)(答案是score++)。有什么原因使它成为一个
lambda
函数而不是一个常规函数(我希望OP更熟悉它)?@mgilson,这正是我第一次想到它的方式。通常我会因为给lambda函数命名而责备人们:)或者只构建一个集合:
set(raw\u input()).intersection(string.ascii\u大写)
import string
if set(raw_input()) & set(string.ascii_uppercase):
  # hello