【问题标题】:Alternatives to the code below? I am very new to coding下面代码的替代方案?我对编码很陌生
【发布时间】:2021-01-14 01:13:55
【问题描述】:
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 小时内得到了我想要的东西(我知道......一个完整的平民。)
由于我是新手,我只是想看看可以通过哪些方式缩短/改进它。
【问题讨论】:
标签:
python-3.x
numbers
number-formatting
【解决方案1】:
您的逻辑大部分都很好,只是冗长。您不需要将变量包装在括号中,也不需要为此导入数学。除了那份好工作。
i = 2
while i < 2048:
print(i)
i *= 2
while i > 2:
i //= 2
print(i)
【解决方案2】:
类似这样的东西可以像下面的代码一样进一步改进:
几点建议: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')
【解决方案3】:
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