在python中使用计数器添加列表以添加特定项

2024-09-28 16:19:05 发布

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

我是编程新手,有一些visualbasic的经验。你知道吗

我正在编写一个python程序,其中用户将4位数字作为整数输入变量(或列表,无所谓),并以4位数字的列表形式输出。你知道吗

即4444输入,4,4,4输出。你知道吗

我写了这个小函数,但我误解了逻辑。计数器使该过程重复四次;而不是遍历每个数字。缺少一个计数器+=1的地方,以及我想让它通过四位数的步骤。你知道吗

还有人能帮我吗?我对循环编码还不熟悉。你知道吗

output = list()
cache = list()
cache = input("Please enter the  number: ")
for counter in range(0,4):
    output.append(cache)
print(output)

Tags: 函数用户程序cache列表output编程计数器
3条回答

您的代码将生成一个列表,其中包含用户输入的任何内容的四个副本。如果您想将用户的输入限制为四位数,我建议如下所示:

cache = ""
while len(cache) < 4:
    cache = raw_input("Please enter four digits (any extras will be discarded): ")
if 4 < len(cache):
    cache = cache[0:4]
print list(cache)

如果用户输入的数字少于四位,while循环将重新提示,直到至少输入四位数字。如果输入的数字超过四位,If语句将切断第四位之后的所有内容。当然,此代码不验证用户输入的数字——例如,它将接受“abcd”。你知道吗

要将字符串转换为列表,只需在list()中运行它。无需将其拆分并将每个字符分别附加到列表中。你知道吗

最后,我使用了raw\u input()而不是input(),因为这在现实世界中通常是最有效的。你知道吗

如果您不知道,您可以通过以下方式直接访问整数中的各个数字:

from decimal import Decimal

Decimal(4321).as_tuple().digits
# (4, 3, 2, 1)

您可以直接从input()函数获得一个4位数的输入。只需将其转换为int(),并捕获由于非数字字符引起的任何异常。你知道吗

要准确地修复您所拥有的内容,请执行以下操作:

output = list()
cache = list()
cache = input("Please enter the  number: ")
for val in str(cache): # note you do not need to cast to a str in python 3.x
    output.append(int(val))
print(output)

您可以简单地将整数输入转换为字符串,然后迭代字符串中的每个字符。Python非常酷,因为它可以让您用传统的for循环结构迭代任何内容。然后,在遍历四位整数时,将其各个部分追加到列表中(如果需要,将其转换回整数)。你知道吗

原始代码所做的是将整个整数(由cache定义)附加到新列表output中四次。你看的不是整数的每一部分,而是整数的整体。你知道吗

注意,在从input赋值之前不需要预定义cache,可以使用[]而不是调用list()函数来定义列表。此外,应该使用raw_input而不是input,这样在处理之前就不需要将读入值强制转换为字符串。具体如下:

output = []
cache = raw_input("Please enter the  number: ")
for val in cache:
    output.append(int(val))
print(output)

最后,如果您不关心将读入的数字值保留为整数(也就是说,将它们作为字符串是可以的),您可以简单地调用缓存上的list()函数:

>> Enter a 4 digit number:1234
>> list(cache)
>> ['1', '2', '3', '4']

如果这对你有用,请告诉我。你知道吗

相关问题 更多 >