str
在 python 中,您可以使用函数将任何数值转换为字符串表示形式。
所以,你可以这样做: -
num = 17
str_num = str(num)
然后,要测试最后一位不等于 7,您可以访问字符串的最后一个字符,并将其与'7'
. 要访问最后一个字符,请使用str_num[-1]
.
所以,你需要的条件是: -
if str_num[-1] != '7':
# don't add it to list
此外,您的内部循环似乎不正确。您正在检查 的模数i
,通过将其与 中的每个数字相除list
,相反,您应该检查模数 until i ** 0.5
。此外,您可以利用else
部分for
循环来避免使用boolean flag
. 因此,您修改后的代码应如下所示
for i in range(2,100):
for num in range(2, int(i ** 0.5) + 1):
if(i % num == 0):
break
else:
if str(i)[-1] != '7':
my_list.append(i)
And else
offor
被执行,当for
循环完成执行而没有任何中断时。
虽然与实际问题没有直接关系,但您可以考虑查看Sieve of Eratosthenes算法,以生成给定范围内的素数。