python一些小习题 田字格、isodd、isnum、multi、isprime、绝对素数、哥德巴赫猜想
Lily学python
一些小习题,答案和我的思路差好多啊,代沟,一定是代沟……
1.1.定义函数输出一个简单的田字格。
建立主程序,由用户输入一个整数,输出更大的田字格图形。
输出结果:
这个好简单啊,Lily就厚着脸皮先放上自己的代码:
#田字格 a=int(input('请输入一个整数')) b='- '*a+'+ '#空格真的坑死人 print('+ '+b*a)#第一行 for j in range(a):#后面的行 for i in range(a): c=' '*a+'1 ' print('1 '+c*a) d='- '*a+'+ ' print('+ '+d*a)
可能我功力太浅,压根没往函数那边想
好了,放老师的吧
def bc(x): print("+ ", end="") for i in range(x): print("- "*x+"+ " , end="") print() def zj(x): for i in range(x): print("1 " , end="") for j in range(x): print(" "*x+"1 ", end="") print() def main(): x=eval(input("请输入一个整数")) bc(x) for j in range(x): zj(x) bc(x) main()
对于老师的代码,我没有任何注释hhh,就是定义了两个函数分别控制两种行的输出。我还是喜欢我的代码hhh,亲生的就是不一样(捂脸)
2.实现isodd函数,
参数为整数,如果整数为奇数,返回True,否则返回False
在主程序中输入整数,调用该函数(考虑输入异常)
输出结果:
Lily的答案,等待命运的批判吧
#isodd def isodd(a): io=bool(0)#这是我的个人风格啦,不喜欢直接True、False if a%2!=0: io=bool(1) print('{}是奇数' .format(a)) else: print('{}是偶数' .format(a)) return io try: a=eval(input("请输入一个整数")) if type(a)==int: #这估计和老师的写法就会不一样,我超喜欢type()==这种直接的函数 isodd(a) except: print("输入错误")
貌似没有错误哈,那就看看大神的脑回路吧
def isodd(x): if x%2==1: return True else: return False try: y=int(input("请输入一个整数")) if isodd(y): print("{}是奇数".format(y)) else: print("{}是偶数".format(y)) except: print("输入错误")
冰冰凉凉,感觉差不多,我好像画蛇添足太多了(不是的我不信)
3. 实现 isnum 函数,
参数为一个字符串,如果字符串属于
整数、浮点数或复数的表示,返回 True,否则返回 False
(提示:通过输入异常实现)
在主程序中输入字符串,调用该函数
输出结果:
我好像,审题时不太明白,就没有把异常处理放进函数里,为了不啰嗦,我只放一个代码好了
def isnum(x): try: if int(x): #尽管不愿意承认,这的确简洁不少,好了,打算弃暗投明 return True except: try: if float(x): return True except: try: #try except嵌套 if complex(x): return True except: return False y=input("请输入数值") if isnum(y): #把输出结果都放在主程序,会是个好习惯吧 print("{}是数值".format(y)) else: print("输入错误")
4. 实现multi函数,
参数个数不限,返回所有参数的乘积。
在主程序中,调用该函数,求多数的乘积
一开始我没明白“参数个数不限”如何实现,我就,打算让用户input哈哈哈
def multi(l): mu=1 for i in l: mu*=i print (mu) l=eval(input('请输入参数,用逗号分隔')) multi(l)
妈妈再也不用担心我找不到计算器了
看看老师的本意吧
def multi(*b): s=1 for x in b: s=s*x return s print(multi(2,3,4,5,6,7))
不怪我,怪你的交互机制不行
5.实现isprime函数,
参数为整数。如果参数为质数,返回True,否则返回False。
在主程序中调用该函数,显示100之内的质数,每行显示五个数。
输出结果:
难点就是每行输出5个数吧,还有一个右对齐需要注意
#isprime def isprime(a): #判断是不是素数 for i in range(2,a): #从2开始 if a%i==0: return False else: return True c=0 #不要放在for循环里面,否则c每次都会被刷回0,起不到计数器的作作用 for j in range(2,100): #因为j已经定在这个范围,所以j=1的情况不需要在上面的函数体现出来 if isprime(j): print(str(j).rjust(5),end='') #右对齐,不换行 c+=1 if c%5==0: #够了5个,就换行 print(end = "\n")
看看升阶版本
def isprime(a): try: #又一次把异常处理放在函数里 for x in range(2,a): #难得的与老师心连心 if a%x==0: return False return True except: print("输入格式错误") k=0 for i in range(2,100): if isprime(i): k=k+1 print("{:5}".format(i),end="") if k%5==0: print() #哦我忘了,print()自带换行效果
6.绝对素数
一个素数,当它的数字位置对换以后扔为素数,这样的数称为绝对素数。例如17和71都是素数
编写一个程序,调用isprime函数,求出所有的两位绝对素数。
输出结果:
我以前的思路就会是,把这个数变成字符串,总觉得,[i]打得很爽(在vscode里面)。后来,我成长了hhh。现在的分离方法就是,求商求余
#绝对素数 def isprime(a): #先判断是不是素数 for i in range(2,a): if a%i==0: return False else: return True for j in range(10,100): #所有两位数 J2=j//10 #分离出十位数 J1=j%10 #分离出个位数 j2=J2+J1*10 #求出颠倒之后的数 if isprime(j) and isprime(j2): #够素数,则绝对 print(j)
想不想知道老师是怎么做的?请看
def isprime(a): try: for x in range(2,a): if a%x==0: return False return True except: print("输入格式错误") for i in range(2,100): if isprime(i) and isprime(i%10*10+i//10): #老师就是不一样,我哭了我这么多行 print(i)
好了,思路相似
7.哥德巴赫猜想
在主程序中调用isprime函数,验证100之内大于2的偶数符合哥赫巴德猜想。每行显示五个数。
哥赫巴德猜想是任一大于2的偶数都可写成两个质数之和。
输出效果:
格式上依旧是五个一行,不着急。
等式的关系就是左边等于右边两个数的和,这俩数都是质数
左边的数据很容易得到,一个for循环遍历100之内的整数;所以就打算用第一、二个推出第三个数,然后验证最后一个数是不是质数就行。
但仅有这样的思考是不周到的,因为你会发现……
类似这样的窘境,重复了太多。每个偶数只要有一个式子成立就够啦,所以,人生苦短,及时break。
```clike #哥德巴赫猜想 def isprime(a): try: for x in range(2,a): if a%x==0: return False return True except: print("输入格式错误") c=0 for i in range(4,100,2): for j in range(2,i//2+1): if isprime(j) and isprime(i-j): print("{:2}={:2}+{:2}".format(i,j,i-j),end=" ") c=c+1 if c%5==0: print() break
不用看我都知道,老师的代码肯定超简洁,枯了
我的代码,输出的,心宽体胖,代码就不放出来了
等我明白,我该怎么给结果塑形再写吧,路漫漫,还有一堆作业,还是去学习吧。
- python 学习 实现isOdd函数 实现isNum()函数 实现multi() 实现isPrime() 格式化输出日期DAY16
- python的类与文件、异常的一些习题作答分享
- Python-用filter()删除1~100的素数和一些思考
- python实现哥德巴赫猜想(任何大于或者等于6的整数都可以写成2个素数之和)
- python学习习题总结(3)——菲波那切数列,求10万以内素数优化
- 学习python过程我所练习的一些习题
- 【Python】Python实现isPrime() 函数(判断整数是否为素数),参数为整数,要有异常处理。
- neuq oj1063: 谭浩强C语言(第三版)习题8.3 求素数 C++
- python魔法函数的一些疑问
- python课后习题 7-10
- 笨方法学习Python-习题19: 函数和变量
- Python读文件要用到的一些东西
- 笨方法学python 习题12 需要重新看的一节
- Python_#求所有的素数
- 安装python的一些工具包---备忘录
- 【转帖】使用python爬虫抓站的一些技巧总结:进阶篇
- Python:collection模块(内置了一些群集相关的方法和函数)
- python编程:从入门到实践习题第五章5-8~5-11
- 《编程珠玑》习题练习In Python——第二章 啊哈!算法
- python3之1007.素数对猜想 (20分)