鱼C论坛

 找回密码
 立即注册
查看: 1584|回复: 11

[已解决]对奇偶,质合数的判断

[复制链接]
发表于 2021-3-5 23:50:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先非常感谢你在百忙之中抽空为我解答。
由于水平有限,以下是我遇到的几个小问题,老是出错,希望得到你的帮助。
奇偶的子程序,通过读取文本获得数字n,然后对它进行奇偶判断,偶数用0代表,奇数用1代表
def check(n):
    if len(n & 1 )==0:
        return('0')
    else:
        return('1')

质数合数的判断子程序,质数用1表示,合数用0 表示,非质非合用2表示
def check(n):
    if len(n % 2 )==0:
        return('0')
    else:
        return('1')
   else:
        return('2')


合数奇偶的子程序:通过对一个数字的个位+十位之和来判断奇偶的,如31,3+1=4, 即该数为偶数,用0代表。
def check(n):
    if len(n[0]+n[1])==0:
        return('0')
    else:
        return('1')


最佳答案
2021-3-6 08:36:00
f = open(r'文件.txt','r')
string = f.read()
f.close()
lst = list(map(int,string.split()))
#判断奇偶
def parity(n):
    if n%2:
        return 1
    else:
        return 0
#判断质合
def qualitatively(n):
    if n == 1 or n == 0:
        return 2
    elif n>1:
        for i in range(2, n//2+1):

                if (n % i) == 0:

                    return 0
        else:
            return 1
#合数奇偶
def check(n):
    temp = n//10+n%10
    if temp %2:
        return 1
    else:
        return 0
#运算函数
def main(fun):
    for i in range(len(lst)):
        print(fun(lst[i]),end = ' ')
        if (i+1)%6 == 0:
            print('\n')

if __name__ == '__main__':
    print('='*25,'奇偶判断','='*25)
    main(parity)
    print('='*25,'质合判断','='*25)
    main(qualitatively)
    print('='*25,'合数奇偶','='*25)
    main(check)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-6 00:27:48 | 显示全部楼层
#判断奇偶
def check1(n) :
    if n % 2 == 0 :       # 我不太懂原题中的len(n & 1 )
        return 0
    else:
        return 1
#判断质数
def check2(n):
    if n == 1:
        return 0
    count = 0
    for c in range(1,n):
        if n % c == 0 :
            count += 1
        if count > 1:
            return 0
    if count == 1:
        return 1
#第三个不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 00:35:14 | 显示全部楼层
补充第三个,理解是看个位数字+十位数字的奇偶性
def check3(n):
    #要求输入大于等于10这里未写此条件判断
    n1 = n % 10     # 个位数字
    n2 = ((n - n1)/10) % 10  # 十位数字
    n3 = n1 + n2
    check1(n3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-6 00:55:51 | 显示全部楼层
yuedong 发表于 2021-3-6 00:35
补充第三个,理解是看个位数字+十位数字的奇偶性

谢谢你的回复。第三个判断合数的奇偶性中,有些数字只有1位的怎么办? 比如 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-6 01:04:01 | 显示全部楼层
#奇偶
def check(n):
    if n % 2 == 0:
        return 0
    else:
        return 1

def output(filename,content):
    f=open(filename,'w+')
    for i in content:
        f.write(' '.join(i)+'\n')
    f.close()
   
   
f=open('data.txt','r+')
data=[i.strip().split('  ') for i in f]
f.close()

index=[tuple(map(lambda x:check(x),i)) for i in data]
indexdict=dict([[i,[]] for i in set(index)])
for i,j in zip(data,index):
    indexdict[j].append(i)
for i in indexdict:
    output(''.join(i)+'.txt',indexdict[i])

我把程序改了,还是出错。
以下是数据文件内容:
3  6  9  16  30  31
3  6  9  16  30  32
3  6  9  16  30  33
3  6  9  16  31  32
3  6  9  16  31  33
3  6  9  16  32  33
3  6  9  17  19  27
3  6  9  17  19  28
3  6  9  17  19  29
3  6  9  17  19  30
3  6  9  17  19  31
3  6  9  17  19  32
3  7  11  19  20  31
3  7  11  19  20  32
3  7  11  19  20  33
3  7  11  19  21  22
3  7  11  19  21  23
3  7  11  19  21  24
3  7  11  19  21  25
3  7  11  19  21  26
3  7  11  19  21  27
3  7  11  19  21  28
3  7  11  19  21  29
3  7  11  19  21  30
3  7  11  19  21  31
3  7  11  19  21  32
3  7  11  19  21  33
3  7  11  19  22  23
3  7  11  19  22  24
3  7  11  19  22  25
8  9  16  19  20  31
8  9  16  19  20  32
8  9  16  19  20  33
8  9  16  19  21  22
8  9  16  19  21  23
8  9  16  19  21  24
8  9  16  19  21  25
11  12  17  18  21  31
11  12  17  18  21  32
11  12  17  18  21  33
11  12  17  18  22  23
11  12  17  18  22  24
11  12  17  18  22  25
11  12  17  18  22  26
17  21  22  23  29  30
17  21  22  23  29  31
17  21  22  23  29  32
17  21  22  23  29  33
17  21  22  23  30  31
17  21  22  23  30  32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 01:04:47 | 显示全部楼层
阿智兄 发表于 2021-3-6 00:55
谢谢你的回复。第三个判断合数的奇偶性中,有些数字只有1位的怎么办? 比如 1

那就在前面写个判断条件,如果<10,就
print('该数字只有个位数字')
如果>10继续执行
或者可以将十位数就用0代替
然后继续执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 01:08:33 | 显示全部楼层
就这样吧,不过我没有去运行
def check3(n):
    #要求输入大于等于10这里未写此条件判断
    if n < 10:
        n1 = n
        n2 = 0
    else:
        n1 = n % 10     # 个位数字
        n2 = ((n - n1)/10) % 10  # 十位数字
    n3 = n1 + n2
    check1(n3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-6 01:45:18 | 显示全部楼层
yuedong 发表于 2021-3-6 01:08
就这样吧,不过我没有去运行

谢谢你的再次回复,我把子程序改好了,运行还是出错。
#奇偶
def check(n):
    if n % 2 == 0:
        return 0
    else:
        return 1

def output(filename,content):
    f=open(filename,'w+')
    for i in content:
        f.write(' '.join(i)+'\n')
    f.close()
   
   
f=open('data.txt','r+')
data=[i.strip().split('  ') for i in f]
f.close()

index=[tuple(map(lambda x:check(x),i)) for i in data]
indexdict=dict([[i,[]] for i in set(index)])
for i,j in zip(data,index):
    indexdict[j].append(i)
for i in indexdict:
    output(''.join(i)+'.txt',indexdict[i])

以下是数据文件内容:
3  6  9  16  30  31
3  6  9  16  30  32
3  6  9  16  30  33
3  6  9  16  31  32
3  6  9  16  31  33
3  6  9  16  32  33
3  6  9  17  19  27
3  6  9  17  19  28
3  6  9  17  19  29
3  6  9  17  19  30
3  6  9  17  19  31
3  6  9  17  19  32
3  7  11  19  20  31
3  7  11  19  20  32
3  7  11  19  20  33
3  7  11  19  21  22
3  7  11  19  21  23
3  7  11  19  21  24
3  7  11  19  21  25
3  7  11  19  21  26
3  7  11  19  21  27
3  7  11  19  21  28
3  7  11  19  21  29
3  7  11  19  21  30
3  7  11  19  21  31
3  7  11  19  21  32
3  7  11  19  21  33
3  7  11  19  22  23
3  7  11  19  22  24
3  7  11  19  22  25
8  9  16  19  20  31
8  9  16  19  20  32
8  9  16  19  20  33
8  9  16  19  21  22
8  9  16  19  21  23
8  9  16  19  21  24
8  9  16  19  21  25
11  12  17  18  21  31
11  12  17  18  21  32
11  12  17  18  21  33
11  12  17  18  22  23
11  12  17  18  22  24
11  12  17  18  22  25
11  12  17  18  22  26
17  21  22  23  29  30
17  21  22  23  29  31
17  21  22  23  29  32
17  21  22  23  29  33
17  21  22  23  30  31
17  21  22  23  30  32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 08:36:00 | 显示全部楼层    本楼为最佳答案   
f = open(r'文件.txt','r')
string = f.read()
f.close()
lst = list(map(int,string.split()))
#判断奇偶
def parity(n):
    if n%2:
        return 1
    else:
        return 0
#判断质合
def qualitatively(n):
    if n == 1 or n == 0:
        return 2
    elif n>1:
        for i in range(2, n//2+1):

                if (n % i) == 0:

                    return 0
        else:
            return 1
#合数奇偶
def check(n):
    temp = n//10+n%10
    if temp %2:
        return 1
    else:
        return 0
#运算函数
def main(fun):
    for i in range(len(lst)):
        print(fun(lst[i]),end = ' ')
        if (i+1)%6 == 0:
            print('\n')

if __name__ == '__main__':
    print('='*25,'奇偶判断','='*25)
    main(parity)
    print('='*25,'质合判断','='*25)
    main(qualitatively)
    print('='*25,'合数奇偶','='*25)
    main(check)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 10:25:48 | 显示全部楼层
阿智兄 发表于 2021-3-6 01:45
谢谢你的再次回复,我把子程序改好了,运行还是出错。
#奇偶
def check(n):

我不知道你的目的是什么。。
我只做到了将data中的数据变成了对应的0和1
将他们一一对应的组成了一个字典
例如输入一个data中的值可以得到对应的0/1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-6 23:22:59 | 显示全部楼层
yuedong 发表于 2021-3-6 10:25
我不知道你的目的是什么。。
我只做到了将data中的数据变成了对应的0和1
将他们一一对应的组成了一个字 ...

谢谢你的多次回复,再次感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-6 23:27:06 | 显示全部楼层

谢谢你的回复,如果能用我原来那个程序去改就更好了。每种输出到一个单独的文件夹里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 09:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表