【发布时间】:2020-09-24 14:43:34
【问题描述】:
我在解决这个问题时遇到了一些麻烦。
我有一个具有random.randint(alpha_low,alpha_high) 的函数。 alpha_low 和 alpha_high 是使用函数 ord 转换为数字值的字母。然后我使用函数chr 将它们转回,这样我得到一个随机字母,并将其附加到final_list. 问题是我想要列表的一半大写,一半小写。但是现在,由于某种原因,我的代码没有打印一半,尽管我指定我希望它的一半保持不变,而一半是.upper()。
import random
def alpha_list(num_values, alpha_low, alpha_high):
final_list = []
for letter in range(num_values):
rando = (chr(random.randint(alpha_low, alpha_high)))
final_list.append(rando)
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
return final_list
user_input_number = eval(input('please type an EVEN amount of letters you want: '))
user_input_first_letter = ord(input('please type the first letter of the limits(lower case): '))
user_input_last_letter = ord(input('please type the last letter of the limits(lower case): '))
print(alpha_list(user_input_number, user_input_first_letter, user_input_last_letter))
我尝试将列表拆分为 2 个列表,并将该列表大写,然后再次合并列表,但我觉得这不是最好的方法。
【问题讨论】:
-
你不应该
eval未经处理的用户输入,除非你想让坏事发生。 -
要跟进 flakes 评论,请查看stackoverflow.com/questions/23294658/…@ 上的这篇文章“询问用户输入直到他们给出有效响应”
标签: python python-3.x list loops