Re: [闲聊] python小白问个问题

楼主: erimow (Erimo)   2024-08-08 16:29:38
Write a function called "isPrime" that takes an integer as input, and returns
a boolean value that indicates if the input number is prime.
isPrime(1)
# returns false
isPrime(5)
# returns true
isPrime(91)
# returns false
isPrime(1000000)
# returns false
我的想法
质数 = 只能被1和自己整除
1不是是质数,所以=1要False
2以后的数字,我只要写如果在从2开始到自己前一位的数字,除下去有任何一个余数是0
那就False
剩下就是True
def isPrime(int):
if int == 1:
print(False)
return False
for i in range(2, int):
if (int % i) == 0:
print(False)
return False
print(True)
return True
这个应该没问题
# Write a function called "palindrome" that checks if the input string is a
palindrome.
这题我一开始想法是
回文就从第一个往后看和从最后一个往前看是一样的
所以我本来是想说用index第一个跟最后一个一样,第二个跟倒数第二个一样
n = len(str)
只要i 在range n里面,j则是从index-1开始往回数
两个 ==
那就是对的
反之就str[0] != str[-1]那就是false
但这样不知道为啥写不出来
前面这边应该没问题
def palindrome(str):
n = len(str)
if str[0] != str[-1]:
print(False)
return False
但有问题的是后面这里
else:
for i in range(0, n):
for j in range(-1, n, -1):
if str[i] == str[j]:
print(True)
return True
如果不是上面的情况应该是要回应True的
但却没办法
我的想法应该是错在for j这句
-1开始应该没错,最后-1倒数应该也没错
但中间要放啥啊
感觉不是n n代表我数第一个就停了
作者: emptie ([ ])   2024-08-08 16:31:00
其实你只要检查到 sqrt(n)就可以停了
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:32:00
你是不是还是不懂巢状循环的执行顺序到底是怎样==
作者: nh60211as   2024-08-08 16:33:00
不要写python
楼主: erimow (Erimo)   2024-08-08 16:33:00
可能是
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:33:00
巢状不是里面一步外面一步欸 是里面一圈外面一步==
作者: Rushia (みけねこ的鼻屎)   2024-08-08 16:34:00
sieve of Eratosthenes了解下
楼主: erimow (Erimo)   2024-08-08 16:34:00
现在在讲第一题还第二题
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:35:00
突然叫菜逼八跳到筛法是想杀了他吧那个是质数的
楼主: erimow (Erimo)   2024-08-08 16:35:00
所以我第一题也有问题喔
作者: Che31128 (justjoke)   2024-08-08 16:36:00
第一题一般会建质数表来跑
楼主: erimow (Erimo)   2024-08-08 16:36:00
效率问题不管 ==
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:36:00
就算只是用除的也有很多优化 筛法直接是别的做法了我也觉得你还不到有办法在意效率的程度
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:37:00
你现在大概是把棍子插到脚踏车里面的阶段
楼主: erimow (Erimo)   2024-08-08 16:37:00
阿康阶段
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:38:00
我不知道你为什么要把0跟-1独立出来判断
楼主: erimow (Erimo)   2024-08-08 16:39:00
我要是知道我就不在这里了
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:39:00
所以你知道你的循环实际上会怎么跑吗这就根本没必要两层阿你直接把i跟j print出来 你就会发现你到底写了什么
作者: Rushia (みけねこ的鼻屎)   2024-08-08 16:41:00
其实新手直接看答案程式码在思考可能比较快
作者: sustainer123 (caster)   2024-08-08 16:41:00
善用print debug
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:41:00
我在说你的for loop 先不要管上半那个愚蠢的if了
楼主: erimow (Erimo)   2024-08-08 16:41:00
干 我写出来了
作者: DoraGian (饮冰)   2024-08-08 16:42:00
这不是大一程式设计第一个作业吗
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:42:00
他没搞清楚它原本的思路到底有什么问题你确定你真的对了吗
楼主: erimow (Erimo)   2024-08-08 16:43:00
至少目前测试的四个都对==
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:44:00
1211就错了吧
楼主: erimow (Erimo)   2024-08-08 16:44:00
真的耶aaba会错
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:45:00
你只判断到头跟尾而已 第一个==直接就回传true你实际上就只要需要一层循环而已
楼主: erimow (Erimo)   2024-08-08 16:47:00
因为他判断完第一个就给我true了
作者: sustainer123 (caster)   2024-08-08 16:47:00
话说我想到的质数判断法的暴力解只要一个循环
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:48:00
你就这样写他当然只判断第一个
作者: sustainer123 (caster)   2024-08-08 16:48:00
为啥要写两个?还有第二个循环的range是啥
作者: sustainer123 (caster)   2024-08-08 16:50:00
靠 两题 没事狼师 你查一下two pointer
作者: MurasakiSion (紫咲シオン)   2024-08-08 16:52:00
然后因为你要的是完全相等 所以要像你第一题那样写循环里用!= 然后return False 外面才True
作者: eight0 (欸XD)   2024-08-08 16:55:00

Links booklink

Contact Us: admin [ a t ] ucptt.com