如何通过循环函数将所有项目放入列表中?

2024-09-27 19:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

此程序将所有项输入到letter[]列表中,并应将它们循环到getLetter函数中,但它不起作用。下面的程序仅通过getLetter函数输出列表的最后一项

import time, sys

def getLetter(letter):
    while True:
        if letter =='A'or letter=='a':
            print('  *  ')
            return
            break
        if letter =='B'or letter=='b':
            print('  **  ')
            return
            break


print('Enter each character individually')
letterInput=[]

while True:
    print('Enter letter number ' + str(len(letterInput)+1),end='')
    print('. Enter nothing to stop.')
    time.sleep(0.5)
    letter = input()
    if letter == '':
        break
    letterInput=letterInput+[letter]
    
print('These are the letters you have inputted:')
for letter in letterInput:
    print(' '+letter)
    

while True:
    for i in range(len(letter)):
        output=getLetter(letter[i])

Tags: or函数程序true列表returniftime
3条回答

诚然,我是在假设描述中关于您希望输出如何工作的一些空白,因此这只是可以应用的一些主要简化的示例

以下是一些更具python风格的方法,可以用来代替类似JavaScript的语法:

def getLetter(letters):
    for i in letters:
        if i.lower() =='a':
            print('  *  ')
        elif i.lower() == 'b':
            print('  **  ')
 
letters = input('Enter a string of letters: ')

print('These are the letters you have inputted: ', letters)
getLetter(letters)

输入:

abcdef

输出:

These are the letters you have inputted:  abcdef
  *  
  **  

下面是我清理这个脚本的尝试,以使它更好地工作,并希望使您更容易添加到它。一些具体说明:

  1. 不要无缘无故地把所有东西都放在while True循环中。它在输入循环的上下文中是有意义的;在其他地方,您这样做似乎没有什么特别的原因,而且很可能使您的程序挂起,因为您没有办法确保循环在每种情况下都被中断
  2. Python中的标准约定是将事物命名为get_letter,而不是getLetter。这是一个早早养成的好习惯
  3. 我实现了您的get_letter函数,这样可以减少代码重复,并在收到意外输入时让它引发异常,而不是永远挂起
  4. 使用for letter in letters而不是for i in range(len(letters))
  5. 使用letters.append(letter)而不是letters = letters + [letter]
  6. 熟悉{}和{};这些方法非常有用,可以轻松格式化字符串
import time


def get_letter(letter: str) -> str:
    letter_symbols = {
        'a': '*',
        'b': '**',
    }
    return f'  {letter_symbols[letter.lower()]}  '


print('Enter each character individually')
letters = []
while True:
    print(
        f"Enter letter number {(len(letters)+1)}. "
        "Enter nothing to stop."
    )
    time.sleep(0.5)
    letter = input()
    if not letter:
        break
    letters.append(letter)

print('These are the letters you have inputted:')
print(' '.join(letters))


for letter in letters:
    print(get_letter(letter))

要将项目附加到列表中,应使用:

letterInput.append(letter)

您的代码有更多问题:

我试图修复它,但我真的不知道脚本应该做什么。 见:

import time, sys


def getLetter(letter):
    if letter == 'A' or letter == 'a':
        return '  *  '
    if letter == 'B' or letter == 'b':
        return '  **  '
    return ''


print('Enter each character individually')
letterInput = []

while True:
    print('Enter letter number ' + str(len(letterInput) + 1), end='')
    print('. Enter nothing to stop.')
    time.sleep(0.5)
    letter = input()
    if letter == '':
        break
    letterInput.append(letter)

print('These are the letters you have inputted:')
for letter in letterInput:
    print(' ' + letter)

for letter_value in letterInput:
    output = getLetter(letter_value)
    print(output)

就像评论中所说的@Samwise,您可以使用以下内容:

def getLetter(letter):
    # letter is 'a' or 'A'
    if letter.lower() == 'a':
        return '  *  '
    # letter is 'b' or 'B'
    if letter.lower() == 'b':
        return '  **  '
    # letter is NOT 'a', 'A', 'b' or 'B'
    return ''

相关问题 更多 >

    热门问题