首页 > 解决方案 > TypeError:“str”对象不可调用,我不知道为什么

问题描述

我正在编写一个程序来过滤掉所有不以 1、3、7 或 9 结尾的数字。

我曾尝试将其与 intigers 进行比较,但这可能比我目前正在尝试的更复杂。

import time
import math
num = 1
primes = [2, 3, 5]
upto = int(input("how many primes do you want to find?"))
start_time = time.time()
while True:
    num = num + 1
    threetest = 0
    digits = list(map(int, str(num)))
    even = str(digits[0])
    num = 1
    if even(len(str(num))-1) == "1" or even(len(str(num))-1) == "3" or even(len(str(num))-1) == "7" or even(len(str(num))-1) == "9":       #(line 13)
    #...

回溯(最后一次调用):文件“C:\test.py”,第 13 行,在 if even(len(str(num))-1) == "1" or even(len(str(num)) -1) == "3" 或偶数(len(str(num))-1) == "7" 或偶数(len(str(num))-1) == "9":

TypeError:“str”对象不可调用

标签: python

解决方案


您可以改为对每个数字尝试以下算法,而无需转换为字符串:

last_digit = abs(num) % 10

if last_digit in [1, 3, 7, 9]:
    # do your stuff...

推荐阅读