python - 我如何修改这个函数,以便它使用特定算法打印 1 和它的参数之间的整数?

标签 python algorithm function for-loop while-loop

我得到了以下练习:

Create a function "MyFunction" with 1 parameter, that will print integers between 1 and its parameter, using a particular algorithm:

MyFunction(25)
1, 2, 3, 7, 8, 9, 13, 14, 15, 19, 20, 21, 25

MyFunction(29)
1, 2, 3, 7, 8, 9, 13, 14, 15, 19, 20, 21, 25, 26, 27

我已经设法创建了一个打印 1 和它的参数之间的数字的函数,但我该如何修改它以打印该特定算法?

根据我的观察,它似乎每打印 3 个数字,就不会打印接下来的 3 个数字,但我不知道如何用代码编写它。我也尝试过在线查看是否有某种我可以合并但未成功的该算法的公式或名称。

def my_function(n):
    for index in range(n):
        print (index + 1)

my_function(25)
my_function(29)

我的代码打印出 1 和参数之间的整数,但我不知道如何打印算法。

另外,附注:我如何使用代码美化器以备将来使用?

最佳答案

像这样的东西应该可以解决问题:

def my_function(n):
    i = 1
    while i <= n:
        print(i)
        if i % 3 == 0:
            i += 3
        i += 1

基本上,每次您要进入不可打印的整数时,您只需跳过它们到下一个可打印的整数。正如您所注意到的,您总是希望打印 3 个数字而不是打印接下来的 3 个项目。明确这一点的版本可以编码为:

def my_function(n):
    should_print = True
    i = 1
    while i <= n:
        if should_print:
            print(i)
        if i % 3 == 0:
            should_print = not should_print
        i += 1

表达式 i % 3 == 0 每 3 次迭代为 True,这正是我们在可打印和不可打印模式之间切换的时间

关于python - 我如何修改这个函数,以便它使用特定算法打印 1 和它的参数之间的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744631/

相关文章:

python - python中的正则表达式结果过滤器

algorithm - 选择尽可能多的行,以保证每列的项目密度

java - 快速排序比 Java 中的插入排序和选择排序慢多少?

php - 无法让登录页面重定向到安全页面

python - 在嵌套元组中寻找值

python - 在 Snow Leopard 上安装 MySQLdb

python - 获取 __init__ 变量

javascript - 如何通过使用 Javascript 单击按钮使图像 move ?

python - 创建后追加 Numpy 数组

algorithm - 如何生成统一的随机整数分区?