亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試在 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條經驗 獲得超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']

根據需要調整字母范圍。


查看完整回答
反對 回復 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 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號