【问题标题】:creating statement from While loop and print从 While 循环创建语句并打印
【发布时间】:2021-01-01 02:14:14
【问题描述】:

美好的一天。我在编码方面已经有几天了,我不确定我尝试创建的内容是否不可能,但如果可以,请提供帮助。

运行此语句时:

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 个数字,所以在打印 2 之后 a = invalid a = invalid 因为没有过去打印的 2 个数字,所以在打印 3 之后,a=123。在打印4 之后,a = 234。打印5 后,a=345 等等。

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

i = 1    
number_store = []   
while i<10:   
       number_store.append(i)   
       if len(number_store) ==4:    
       del number_store[0]   
       print(number_store)    
       i +=1

感谢所有回答的人

【问题讨论】:

  • 请用您尝试过的代码更新您的问题。
  • 创建一个列表,将当前数字压入最后,如果大小大于3,则从头弹出一个元素。
  • 您可以计算最后的数字,例如i - 1 或者您可以将它们保存在变量中,例如last1 = i

标签: python loops while-loop printing


【解决方案1】:

您可以使用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】:

    这里的 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)
    

    【讨论】:

      【解决方案3】:

      一种方法是将这 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
      

      【讨论】:

      • 谢谢你的回答。不幸的是,我的赞成票无法记录,因为我的声望还不到 15 以表示我的感激之情。但是有一个问题,您给我打印串联列表的代码返回错误:“序列项 0:预期的 str 实例,找到 int”
      • 对。我应该先把数字变成字符串。让我编辑答案(见第一行代码,我们追加到列表的那一行)
      • 哦,再次感谢您。照你说的做了,结果很完美。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2021-11-06
      • 2017-03-11
      • 2013-04-04
      • 2020-06-18
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多