从While循环创建语句并打印

时间:2020-09-14 10:57:44

标签: python loops while-loop printing

美好的一天。我在编码方面工作了几天,我不确定我尝试创建的内容是否可行,但请提供帮助。

运行此语句时:

i = 1
while i < 20:
  print(i)
  i += 1

数字按列表打印。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

我想创建一个数字,该数字是过去2个已打印数字+当前数字的组合,并在每个回合中为其分配字母a。例如,在1被打印之后,没有过去的2个数字,因此a = invalid之后的2被打印了a = invalid,因为在{{1}之后没有2个过去的打印数字}打印3。打印a=123之后,4。在a = 234打印之后,5依此类推。

我决定使用存储结果的方法,而不是依赖于算术的解决方案,因为我的实际问题与我在这里写的不一样。

a=345

感谢所有回答的人

3 个答案:

答案 0 :(得分:1)

一种方法是将3个数字存储在列表中。 每次循环(转弯)时,新编号都会添加到列表中,例如stored_numbers.append(str(i)) 如果列表的长度超过3个元素,则可以删除第一个元素

if len(stored_numbers) == 4:
    del stored_numbers(0)

然后您可以使用print(''.join(stored_numbers))

打印并置列表。

但是,由于您的示例仅要求加1,因此您可以不用算术了

i = 3
while i < 20:
    print((i-2)*100+(i-1)*10+i)
    i += 1

您使用的while循环可以更像Python一样表达为for循环

for i in range(3,21):
    print((i-2)*100+(i-1)*10+i)
    # i += 1  /No need for this, since i is incremented by the for loop

答案 1 :(得分:0)

您可以使用f strings格式化结果:

i = 1
past = 2

while i < 20:
    if i > past:
        print(f'{i-2}{i-1}{i}')
    i += 1

出局:

123
234
345
456
567
678
789
8910
91011
101112
111213
121314
131415
141516
151617
161718
171819

答案 2 :(得分:0)

这里arr将包含您需要的所有内容

arr=[]
i=1
while i<20:
    if (i-2<=0):
        a="invalid"
        print(a)
        arr.append(a)
        i=i+1
    else:
        a=str(i-2)+str(i-1)+str(i)
        arr.append(a)
        i=i+1

print(arr)
相关问题