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條經驗 獲得超4個贊
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:
添加回答
舉報