【问题标题】:How to print (join) 2 loops' result如何打印(加入)2 个循环的结果
【发布时间】:2018-08-12 01:56:18
【问题描述】:

我有 2 个循环:

第一个循环:

number = 1234567
number_string = str(number)
for ch in number_string:
    print(ch)

这将打印:

1 
2 
3 
4 
5 
6 
7

我有另一个循环是:

totalNum = len(str(abs(number)))
for i in range(totalNum, 0, -1):
  print("* 10^ ",int(i-1))

我会得到的

* 10^  6
* 10^  5
* 10^  4
* 10^  3
* 10^  2
* 10^  1
* 10^  0

但是我如何加入这两个循环成为这样的结果:

1 * 10^  6
2 * 10^  5
3 * 10^  4
4 * 10^  3
5 * 10^  2
6 * 10^  1
7 * 10^  0

我是 Python 新手,所以我不知道该怎么做。

【问题讨论】:

    标签: python python-3.x for-loop


    【解决方案1】:

    这对你有什么作用:

    number = 1234567
    totalNum = len(str(abs(number)))
    for i in range(totalNum, 0, -1):
      print(str(number)[::-1][i-1] + " * 10^ ",int(i-1))
    

    输出:

    1 * 10^  6
    2 * 10^  5
    3 * 10^  4
    4 * 10^  3
    5 * 10^  2
    6 * 10^  1
    7 * 10^  0
    

    【讨论】:

      【解决方案2】:

      一种方法是先将字符串存储在列表中,然后打印它们:

      >>> number = 1234567
      >>> totalNum = len(str(abs(number)))
      >>> string1 = [x for x in str(number)]
      >>> string2 = ['* 10^ {}'.format(i-1) for i in range(totalNum, 0, -1)]
      >>> for s1, s2 in zip(string1, string2):
      ...     print(s1, s2)
      ...
      1 * 10^ 6
      2 * 10^ 5
      3 * 10^ 4
      4 * 10^ 3
      5 * 10^ 2
      6 * 10^ 1
      7 * 10^ 0
      

      【讨论】:

      • 它也有效!但到目前为止我无法理解这些行 string2 = ['* 10^ {}'.format(i-1) for i in range(totalNum, 0, -1)] >>> for s in zip(string1, string2): ... print(' '.join(s)).你能解释更多吗?
      • 看看List comphrehensions。如果您还有任何疑问,请随时提问。另外,我在for 循环中做了一个小改动。看一看。我认为它更容易理解。
      【解决方案3】:

      这可能会有所帮助。你可以使用zip

      number = 1234567
      totalNum = len(str(abs(number)))
      for v, i in zip(str(number), range(totalNum, 0, -1)):
        print(v, "* 10^ ",int(i-1))
      

      输出:

      1 * 10^  6
      2 * 10^  5
      3 * 10^  4
      4 * 10^  3
      5 * 10^  2
      6 * 10^  1
      7 * 10^  0
      

      【讨论】:

        【解决方案4】:

        有几种方法可以做到这一点,我的使用enumerate() 来索引字符串:

        number = 1234567
        number_string = str(number)
        totalNum = len(str(abs(number)))
        
        for j,i in enumerate(range(totalNum, 0, -1)):
          print(number_string[j], "* 10^ ", int(i-1))
        

        给予:

        1 * 10^  6
        2 * 10^  5
        3 * 10^  4
        4 * 10^  3
        5 * 10^  2
        6 * 10^  1
        7 * 10^  0
        

        enumerate() 遍历一个序列并给出索引号 (j) 和项目 (i) 的元组。

        【讨论】:

        • @YashidaKimLeeRoger IMO 这应该是公认的答案。它是 Python 的,至少比我的效率更高。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-06
        • 1970-01-01
        • 1970-01-01
        • 2020-04-18
        • 1970-01-01
        • 1970-01-01
        • 2021-10-12
        相关资源
        最近更新 更多