我正在创建一个接受字符串并返回匹配字符串的函数,其中每个偶数字母均为大写,每个奇数字母均为小写。该字符串仅包含字母
我尝试了一个for循环,使用if语句循环遍历字符串的长度,该语句检查索引是否偶数返回该索引的大写字母,以及索引是否为奇数以返回该索引的小写字母。 / p>
def my_func(st):
for index in range(len(st)):
if index % 2 == 0:
return st.upper()
else:
return st.lower()
我希望偶数字母大写,奇数字母小写,但整个字符串我都只能大写。
答案 0 :(得分:3)
您的代码中存在一些问题:
当前,您正在从第一个索引本身的函数返回,即在执行index=0
时从return st.lower()
返回,因此该函数在遇到第一个索引并中断时会停止执行for循环
执行st.lower()
或st.upper()
会导致整个字符串大写/小写,而您想大写/小写单个字符
一种方法是遍历字符串,收集列表中所有修改过的字符,通过str.join将列表转换为字符串,然后在末尾返回结果
您还希望通过索引引用每个单独的字符。
def my_func(st):
res = []
#Iterate over the character
for index in range(len(st)):
if index % 2 == 0:
#Refer to each character via index and append modified character to list
res.append(st[index].upper())
else:
res.append(st[index].lower())
#Join the list into a string and return
return ''.join(res)
您还可以使用enumerate
遍历索引和字符def my_func(st):
res = []
#Iterate over the characters
for index, c in enumerate(st):
if index % 2 == 0:
#Refer to each character via index and append modified character to list
res.append(c.upper())
else:
res.append(c.lower())
#Join the list into a string and return
return ''.join(res)
print(my_func('helloworld'))
输出将为
HeLlOwOrLd
答案 1 :(得分:2)
您可以预先存储您的操作,并在join
和enumerate
中使用它们:
def my_func(st):
operations = (str.lower, str.upper)
return ''.join(operations[i%2](x) for i, x in enumerate(st))
print(my_func('austin'))
# aUsTiN
答案 2 :(得分:0)
return
将终止您的功能,因此循环的意义不大st
是整个字符串,所以st.upper()
将产生大写的整个字符串。答案 3 :(得分:0)
您可以使用按位和(&)检查奇数位置。枚举功能将为您提供位置和字符,因此您可以轻松地在列表理解中使用它:
def upLow(s):
return "".join(c.lower() if i&1 else c.upper() for i,c in enumerate(s))
upLow("HelloWorld") # HeLlOwOrLd
答案 4 :(得分:0)
稍微调整一下代码,您可以使用'enumerate'并根据条件求值不断追加到字符串(对我来说,这很容易,因为我一直在用Java编写代码:))
def myfunc(st):
str=''
for index, l in enumerate(st):
if index % 2 == 0:
str+=l.upper()
else:
str+=l.lower()
return str
答案 5 :(得分:0)
下面的代码应该可以满足您的需求。
def myfunc(name):
str=""
lc=1;
for character in name:
if(lc%2==0):
str+=character.upper()
else:
str+=character.lower()
lc+=1
return str
答案 6 :(得分:0)
代码如下:
def myfunc(st):
list=[]
index=0
for x in st:
if index%2==0:
list.append(x.upper())
else:
list.append(x.lower())
index=index+1
return ''.join(list)
这是有效功能。我已经阅读了上面给出的许多代码,但是都没有运行。所以在这里我做了一些修改。这是有效的。
答案 7 :(得分:0)
def myfunc(str):
rstr = ''
for i in range(len(str) ):
if i % 2 == 0 :
# str[i].upper()
rstr = rstr + str[i].upper()
else:
#str[i].lower()
rstr = rstr + str[i].lower()
return rstr
答案 8 :(得分:0)
def myfunc(a):
newString = ''
for count, ele in enumerate(a, 0):
if count %2 == 0:
newString += (a[count].lower())
else:
newString += ((a[count].upper()))
return newString
答案 9 :(得分:0)
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'description' => 'required',
'condition' => 'required',
'city' => 'required',
'address' => 'required',
'price' => 'required',
'category' => 'required',
// Images validation except mimes
'images' => 'required',
'images.*' => 'max:2048'
]);
// Extensions to check
$allowedfileExtension = ['jpeg','jpg','png'];
$files = [];
if ($request->hasfile('images')) {
$images = $request->file('images');
foreach ($images as $image) {
// Getting image extension
$extension = $image->getClientOriginalExtension();
$check = in_array($extension, $allowedfileExtension);
// Checking the image extension
if (!$check) {
return redirect()->back()->with('error', 'Images must be png, jpeg or jpg!');
}
// ...
}
}
$files = json_encode($files);
//.. Insert function
return redirect()->back()->with('success', 'Your ad has been created!');
}
使用这个枚举方法来执行你的操作
答案 10 :(得分:-1)
st="rhinoceros"
p=list()
for index in range(len(st)):
if index % 2!=0:
p.append(st[index].upper())
else:
p.append(st[index].lower())
print("".join(p))