阿智兄 发表于 2021-3-5 23:50:57

对奇偶,质合数的判断

首先非常感谢你在百忙之中抽空为我解答。
由于水平有限,以下是我遇到的几个小问题,老是出错,希望得到你的帮助。
奇偶的子程序,通过读取文本获得数字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+n)==0:
      return('0')
    else:
      return('1')


yuedong 发表于 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
#第三个不太清楚

yuedong 发表于 2021-3-6 00:35:14

补充第三个,理解是看个位数字+十位数字的奇偶性

def check3(n):
    #要求输入大于等于10这里未写此条件判断
    n1 = n % 10   # 个位数字
    n2 = ((n - n1)/10) % 10# 十位数字
    n3 = n1 + n2
    check1(n3)

阿智兄 发表于 2021-3-6 00:55:51

yuedong 发表于 2021-3-6 00:35
补充第三个,理解是看个位数字+十位数字的奇偶性

谢谢你的回复。第三个判断合数的奇偶性中,有些数字只有1位的怎么办? 比如 1

阿智兄 发表于 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=
f.close()

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

我把程序改了,还是出错。
以下是数据文件内容:
369163031
369163032
369163033
369163132
369163133
369163233
369171927
369171928
369171929
369171930
369171931
369171932
3711192031
3711192032
3711192033
3711192122
3711192123
3711192124
3711192125
3711192126
3711192127
3711192128
3711192129
3711192130
3711192131
3711192132
3711192133
3711192223
3711192224
3711192225
8916192031
8916192032
8916192033
8916192122
8916192123
8916192124
8916192125
111217182131
111217182132
111217182133
111217182223
111217182224
111217182225
111217182226
172122232930
172122232931
172122232932
172122232933
172122233031
172122233032

yuedong 发表于 2021-3-6 01:04:47

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

那就在前面写个判断条件,如果<10,就
print('该数字只有个位数字')
如果>10继续执行
或者可以将十位数就用0代替
然后继续执行

yuedong 发表于 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)

阿智兄 发表于 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=
f.close()

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

以下是数据文件内容:
369163031
369163032
369163033
369163132
369163133
369163233
369171927
369171928
369171929
369171930
369171931
369171932
3711192031
3711192032
3711192033
3711192122
3711192123
3711192124
3711192125
3711192126
3711192127
3711192128
3711192129
3711192130
3711192131
3711192132
3711192133
3711192223
3711192224
3711192225
8916192031
8916192032
8916192033
8916192122
8916192123
8916192124
8916192125
111217182131
111217182132
111217182133
111217182223
111217182224
111217182225
111217182226
172122232930
172122232931
172122232932
172122232933
172122233031
172122233032

逃兵 发表于 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),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)

yuedong 发表于 2021-3-6 10:25:48

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


我不知道你的目的是什么。。
我只做到了将data中的数据变成了对应的0和1
将他们一一对应的组成了一个字典
例如输入一个data中的值可以得到对应的0/1

阿智兄 发表于 2021-3-6 23:22:59

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

谢谢你的多次回复,再次感谢。

阿智兄 发表于 2021-3-6 23:27:06

逃兵 发表于 2021-3-6 08:36


谢谢你的回复,如果能用我原来那个程序去改就更好了。每种输出到一个单独的文件夹里。
页: [1]
查看完整版本: 对奇偶,质合数的判断