以下代码的替代方案?我对编码很陌生

Alternatives to the code below? I am very new to coding

import math
i = (2)
max = (2048)
num = (2)
while i < max:
    print(int(i))
    i *= num
    if i > max:
        i /= num
        break
if i == max:
    while i <= max:
        print(int(i))
        i /= num
        if i == round(1):
            break
        else:
            print(int(i))
            i /= num
            if i == round(1):
                break

我对编码领域很陌生,所以我认为 PYTHON3 是一种很好的入门语言! 出于某种奇怪的原因,我希望程序打印出 2 并将其加倍到 2048。然后我想打印出数字但将它们除以 2!我在大约 1-2 小时内得到了我想要的东西(我知道......一个完整的平民。)

因为我是新手,所以我只是想看看这可以通过什么方式实现shortened/improved。

像这样的代码可以进一步改进: 几点建议:1)使用更具描述性的变量名,如upper_bound,避免内置max; 2) 学习looping和变量赋值和表达式等基础知识

upper_bound = 2048

num = 2

while num < upper_bound:
    num = num * 2

    print(num, end='\t')

    

while num > 0:
    num = num // 2
    print(num, end='\t')
    

你的逻辑大部分都很好,就是冗长。您不需要将变量包装在括号中,也不需要为此导入数学。除了那份好工作。

i = 2
while i < 2048:
    print(i)
    i *= 2
while i > 2:
    i //= 2
    print(i)
for x in range(1,12):
  z = 2**x 
  print(z)
  
  
for y in range (12,1,-1):
  z = 2**y 
  print(z)

在控制台中编写如下函数调用

printMultiples(2,2048,2)
def printMultiples( initialValue,endValue,multipliedBy): 
    initialValueSaved =  initialValue
    while initialValue <= endValue:
        print(initialValue)
        initialValue *= multipliedBy
    
   
    while endValue >= initialValueSaved:
        print(endValue)
        endValue //=multipliedBy