为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 for 循环中使用列表索引

尝试在 for 循环中使用列表索引

肥皂起泡泡 2023-09-05 15:38:26
我在解决这个问题时遇到了一些麻烦。我有一个具有random.randint(alpha_low,alpha_high). alpha_low和alpha_high是使用函数 转换为数字值的字母ord。然后我使用该函数将它们转回,chr以便获得一个随机字母,并将其附加到final_list.问题是我想要列表的一半大写,一半小写。但现在,由于某种原因,我的代码没有打印一半一半,尽管我指定我希望一半保持不变,一半保持不变.upper()。import randomdef 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_listuser_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 个列表,并将该列表大写,然后再次组合列表,但我觉得这不是最好的方法。
查看完整描述

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()]


查看完整回答
反对 回复 2023-09-05
?
守着一只汪

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']

根据需要调整字母范围。


查看完整回答
反对 回复 2023-09-05
?
绝地无双

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 应用于该一半中的每个元素,并将新的一半分配给旧的一半。


查看完整回答
反对 回复 2023-09-05
?
阿波罗的战车

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']


查看完整回答
反对 回复 2023-09-05
?
慕少森

TA贡献2019条经验 获得超9个赞

您正在比较 Final_list 中的字母。您需要比较索引以将一半字母设置为大写。

改变:

if final_list[i] > final_list[int((len(final_list)/2)-1)]:

到:

if i > len(final_list)/2 - 1:


查看完整回答
反对 回复 2023-09-05
  • 5 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信