5 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
考慮到有關(guān)用戶輸入評(píng)估的注意事項(xiàng),您遇到的問題與代碼有關(guān):
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 已經(jīng)包含所有小寫字母,因此您只需將列表的后半部分變?yōu)榇髮懠纯?。以下語(yǔ)句完成此任務(wù):
final_list = final_list[0:len(final_list)//2] +
[x in final_list[len(final_list)//2:] x.upper()]

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
Athrough的 ASCII 值Z是 65 到 90。要變?yōu)樾?,您需要在該值上添?32。
您可以使用這些初始值(65 到 90)作為界限來確定字母,并在列表長(zhǎng)度的中間添加 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']
根據(jù)需要調(diào)整字母范圍。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
final_list = [item.upper() if idx > len(final_list) else item for idx, item in enumerate(final_list)]
在這里,我們?cè)俅蔚斜?,但使?code>enumerate給出每個(gè)元素的索引,我們可以使用它通過基于索引的條件構(gòu)造新列表。
使用地圖的更簡(jiǎn)潔的方式:
final_list[len(final_list//2):] = list(map(str.upper, final_list[len(final_list//2):]))
這里我們只得到列表的一半,并將 str.upper 應(yīng)用于該一半中的每個(gè)元素,并將新的一半分配給舊的一半。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
好吧,你可以一個(gè)人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貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
您正在比較 Final_list 中的字母。您需要比較索引以將一半字母設(shè)置為大寫。
改變:
if final_list[i] > final_list[int((len(final_list)/2)-1)]:
到:
if i > len(final_list)/2 - 1:
添加回答
舉報(bào)