《python语言程序设计》(2018)编程题第6章24题 第2次做-有些事不需要浪费时间

作者分享了自己学习编程的经历,尤其是关于素数和回文数算法的挑战。在历经多次尝试和失败后,作者认识到不必从零开始,可以基于前人的代码进行修改和学习。文中提到了代码实现和问题反思,表达了对编程学习的执着和对效率的思考。
摘要由CSDN通过智能技术生成

在这里插入图片描述

好久没有写了。因为没有什么感觉,自己只是在重复。2022-10-19 我停在了这里第6章第24题。我重新从第1章开始做。也许大家要问一个7天就能学会,13天就能就业的学科,让你学了3年才到第6章。真是可笑。但是我就这样做了。而今天想写的不是我的努力。而是分享一些我的认识和感悟。

作为初学者。我能从第1章一直走到这里。前面遇到了很多很多难啃的题。我都一个一个咬碎吃透。但是到了这里我又回到了起点。

整整5天,下面这些只有8日到10日的记录,另一些在另一台电脑里
2023.03.08_20:16
06.24.01version,but is fail
    number = 0
    count = 0
    divide = 2
    while count <= 100:
        number += 1
        if number % divide == 0 and number % number == 0:
            print(number, divide)
            divide += 1
        count += 1

2023.03.09_8:53
  这道代码的难点在于数的除法
  I think this code difficult point divide number.
  我应该怎么告诉,电脑我想要的结果呢
  I tall to computer I came up with the result
    
    我的想法如下(方案一)
  Ok! My idea is as follows:
    
      1、确定100个素回数
      No1.Determine the number of 100 prime palindromes
          1.1、利用count变量作为定义100个数
          No1.1、Use the count variable to define 100 numbers
          1.2、利用divide变量来存储除数
          No1.2、Use the divide variable to store divisor
    
      2、利用循环来求结果
      No2.Use the while or for cycle to find the result
          调用No1的结果,不断累加变量count和变量divide的数值求结果   
          The result of calling No1 is to continuously add the values of the variables count and divide

2023.3.09_20:00 code is fail
          
    NUMBER_COUNT = 10
    div_n = 2
    cou_n = 0
    while cou_n < NUMBER_COUNT:
        while cou_n <= cou_n / div_n:
            if cou_n % div_n == 0:
                print(cou_n, div_n)
                # div_n += 1
        cou_n += 1

2023.3.10_5:52
    先尝试写备注
    Try writing notes first
    天无捷径,路在脚下
    There is no shortcut to heaven, the road is under foot
    
    方案2
    plan number tow
    
    1.求素数
    1.Find a prime number
    2.从求出的素数中,求回文数
    2.From the obtained prime number, find the palindrome number
    下面的代码还是不对
    following down code is fail
        divide_num = 2
            for i in range(1, 10):
                if i // divide_num != 1:
                    print(i)
                divide_num += 1

2023.3.10_13:34
    需要重新认真的分析书中的《程序清单6-7》
    The program listing 6-7 in the book needs to be carefully reanalyzed 
    1.确认素数,条件是除数小于等于被除数除于2.
    1.identify prime number, if the divisor is less than or equal to the dividend divided by2
    divisor = 2
    number = 20
    while divisor <= number / 2:
        if number % divisor == 0:
            continue
        divisor += 1
        print(number)
    print(number)
我一直在纠结我想自己先找到求素数的代码。大家可以看到这些代码最终都回到了原点。就像在和自己开玩笑一样。

也许悖逆自己内心做事就是这样的结果。过于纠结过于追求欲速则不达吧。我今天放下了从0开始的想法。学这接受前人写好的代码,在他们的基础上进行修改

这个是之前书里“程序清单6-7”代码段 在150页,我不理解为什么divisor <= number /2 ,说不好是嫉妒还是羡慕。就是想推翻这段代码自己编。上次好像也是类似的问题。


def isPrime(number):
    divisor = 2
    while divisor <= number / 2:
        if number % divisor == 0:
            return False
        divisor += 1
    return True

我现在不想这样了。有些事不需要浪费时间。



def isPrime(number):
    divisor = 2
    while divisor <= number / 2:
        if number % divisor == 0:
            return False
        divisor += 1
    return True

# 此处是我自己的今天设计的。
def is_pali(number):
    if number >= 100:
        a = number // 100
        c = number % 100 % 10
        if a == c:
            return True
        else:
            return False
    elif number <= 10:
        a = number // 100
        b = number % 100 // 10
        if a == b:
            return True
        else:
            return False
    elif number <= 99:
        b = number % 100 // 10
        c = number % 100 % 10
        if b == c:
            return True
        else:
            return False


def printPrimeNumbers(number_of_primes):
    number_of_primes_per_line = 10
    count = 0
    number = 2
    while count < number_of_primes:
        if isPrime(number):
            if is_pali(number):
                count += 1
                print(format(number, ">4d"), end=" ")
                if count % number_of_primes_per_line == 0:
                    print()

        number += 1
        count += 1


def main():
    print("The first 100 prime number are")
    printPrimeNumbers(1000)


main()


def is_pali(number): 的内容是我自己设计的。

我似乎想起来了。2022年为什么卡在这里。是因为我看到答案里回文数竟然出现2、3、5、7、11,我觉得作者是开玩笑。后来想既然你说有。我就证明就好了。结果相当扑街。然后2022年10月停止了。

刚才在写这些内容的时候似乎明白了。作者是不是利用素数或者回文数的公式得出的结果,而不是我单纯只是对比2边的数是否对等。

当然今天这个版本也有不满意的地方。就是逢10个数换行,

结果如下图

在这里插入图片描述

好了就说这些。祝大家2023继续努力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电饭叔

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值