5 回答
TA贡献1807条经验 获得超9个赞
考虑到有关用户输入评估的注意事项,您遇到的问题与代码有关:
for i in range(len(final_list)):
if final_list[i] > final_list[int((len(final_list)/2)-1)]:
final_list[i] = final_list[i].upper()
else:
pass
由于 Final_list 已经包含所有小写字母,因此您只需将列表的后半部分变为大写即可。以下语句完成此任务:
final_list = final_list[0:len(final_list)//2] +
[x in final_list[len(final_list)//2:] x.upper()]
TA贡献1872条经验 获得超3个赞
Athrough的 ASCII 值Z是 65 到 90。要变为小写,您需要在该值上添加 32。
您可以使用这些初始值(65 到 90)作为界限来确定字母,并在列表长度的中间添加 32:
#!/usr/bin/env python3
import random
def build_list(length):
l = [''] * length
for i in range(length):
uc = 32 if i >= length // 2 else 0
l[i] = chr(random.randint(65, 90) + uc)
return l
print(build_list(10)) # ['L', 'M', 'Q', 'U', 'H', 'w', 'x', 'o', 'j', 'u']
根据需要调整字母范围。
TA贡献1946条经验 获得超4个赞
final_list = [item.upper() if idx > len(final_list) else item for idx, item in enumerate(final_list)]
在这里,我们再次迭代列表,但使用enumerate
给出每个元素的索引,我们可以使用它通过基于索引的条件构造新列表。
使用地图的更简洁的方式:
final_list[len(final_list//2):] = list(map(str.upper, final_list[len(final_list//2):]))
这里我们只得到列表的一半,并将 str.upper 应用于该一半中的每个元素,并将新的一半分配给旧的一半。
TA贡献1862条经验 获得超6个赞
好吧,你可以一个人for loop来完成它。尝试一下,让我知道这是否适合您,或者您需要任何解释。
代码:
import random
from typing import List
def alpha_list(letters: int,
start: int,
stop: int,
randomize: bool = True) -> List[str]:
"""
Return list of evenly* distributed characters with mixed cases.
Args:
letters: Maximum number of characters required in the list.
start: Starting ordinal range.
stop: Stopping ordinal range.
randomize: Boolean to return random sequence.
Returns:
List of characters split in upper and lower cases.
"""
chars = []
for idx in range(letters):
temp = (chr(random.randint(start, stop)))
chars.append(temp.upper() if idx % 2 else temp)
if randomize:
random.shuffle(chars)
return chars
# Usage:
number = int(input("Please enter even amount of characters you want: "))
first = ord(input("Please type the first character of the limits in lowercase "
"[ex: a]: "))
last = ord(input("Please type the last character of the limits in lowercase "
"[ex: z]: "))
print(alpha_list(number, first, last))
输出:
>>> Please enter even amount of characters you want: 10
>>> Please type the first character of the limits in lowercase [ex: a]: a
>>> Please type the last character of the limits in lowercase [ex: z]: z
['r', 'w', 'r', 'i', 'z', 'U', 'F', 'Z', 'H', 'F']
TA贡献2019条经验 获得超9个赞
您正在比较 Final_list 中的字母。您需要比较索引以将一半字母设置为大写。
改变:
if final_list[i] > final_list[int((len(final_list)/2)-1)]:
到:
if i > len(final_list)/2 - 1:
添加回答
举报