#输入两个数字,输出最大数(要求使用if语句) for i in range(3): a=int(input('pls enter a num')) b=int(input('pls enter a num')) if a>b: print(a) elif a
#给定一个不超五位正整数,判断其有几位. while True: try: a=int(input('pls enter a positive integer,less than five-digit ')) if a>0 and a<99999: break else: print('watch carefully,my sweety') except: print('integer') m=str(a) print(len(m))
#打印10到1
法一: flag=10 while flag: print(flag) flag -= 1
法二: for i in range(10,0,-1): print(i)
#打印1到10: for i in range(10): print(i+1)
#打印10以内偶数
法一: for i in range(10): if not i%2: print(i)
法二: for i in range(10): if i%2: continue print(i)
法三: for i in range(0,10,2): print(i)
#计算1000以内能被7整除的前20个数:
法一: count=0 for i in range(1000): if i%7==0: print(i) count+=1 if count==20: break
法二: count=0 for i in range(0,1000,7): print(i) count+=1 if count==20: break
#给定一个不超过5位的正整数,判断该数的位数,依次打印出个十百千万位数字: while True: try: a=int(input('pls enter a positive integer,less than five-digit ')) if a>0 and a<99999: break else: print('watch carefully,my sweety') except: print('integer') m=str(a) print(len(m)) print('以下法一结果:') new1=a for i in range(len(m)): n=new1//10 print(new1-n*10) new1=n print('以下法二结果:') new2=a for i in range(len(m)): print(new2%10) new2=new2//10
#打印一个边长为n的正方形: n=int(input('enter the length')) print('以下法一结果') for i in range(n): if i==0 or i==(n-1): print('*'*n) else: print('*'+' '*(n-2)+'*') print('以下法二结果') print('*'*n) for i in range(n-2): print('*'+' '*(n-2)+'*') print('*'*n)
#求100内所有奇数的和(2500) summ=0 for i in range(100): if i%2 !=0: summ=summ+i print(summ) print('法二') a=0 for i in range(1,100,2): a+=i print(a)
#判断学生成绩(A~E),90+是A,80-89是B,70-79是C,60-69是D,小于60是E a=int(input('your score')) if a>70: if a>=90: print('A') elif a>=80: print('B') else: priny('C') elif a>=60: print('D') else: print('E')
#求1-5阶乘之和 a=1 sum=0 for i in range(1,6): a=i*a sum=sum+a print(sum)
#给一个数,判断是否为素数(质数)
思路: 对这个数从2开始测试到n-1为止 a=int(input('give me a num')) flag = False for i in range(2,n): if n%i == 0: print('not a prime num') break else: print('a prime num')
#打印九九乘法表
思路:两层循环嵌套,注意顺序及打印边界.
法一:
思路: i循环中先设s值为空,避免j循环将s值带乱.内层j循环靠i卡边界,打印到i+1停止. for i in range(1,10): s='' for j in range(1,10): if j
法二:(字符串拼接,但存在打印结果不够整齐的问题)
思路:修改print函数end参数的值为空(默认值为\n),相当于打印当前行后不换行.
(其他知识点:print函数sep参数的默认值为空格,可以根据自己需要修改改为@,&,$等等) for i in range(1,10): for j in range(1,i+1): print(str(j)+'*'+str(i)+'='+str(i*j),end=' ')
法三:(使用format函数填充,同时末尾分情况填充1或2个空格使打印结果更为整齐. 打印结果会发现第一二列之间空三格,其余列空两格)
知识点:format调用,按位置对应{}内的参数值; 前面要几个值,format函数括号里需至少提供几个值,否则会报错; {}内如填有数字(形为{1}),则为索引之意,调用format时会按照索引所示序号进行填充,索引超过范围会报IndexError. for i in range(1,10): for j in range(1,i+1): if j*i<10: print('{}x{}={} '.format(j,i,i*j),end='') else: print('{}x{}={} '.format(j,i,i*j),end='') print()
法三其他实现:(同样使用format函数填充,同时设置左对齐)
知识点: {:10}代表空10格,{:>10}:空10格且右对齐,{:<10}:空10格切左对齐 for i in range(1,10): for j in range(1,i+1): print('{}x{}={: <2} '.format(j,i,i*j),end='') print()
无敌整齐版: for i in range(1,10): for j in range(1,i+1): product = i*j if j>1 and product<10: product=str(product) + ' ' else: product=str(product) print(str(j) + '*' + str(i) + '=' + product,end=' ') print()
其他变形:打印右上乘法口诀表(正常是左下)
思路:考虑边界,打出第一行后,使用format函数使其他行与第一行对齐. for i in range(1,10): s='' for j in range(1,10): if j+1>i: s += str(i)+ '*' + str(j) + '=' + str(i*j) + ' ' print('{:>80}'.format(s))
#打印菱形
思路:对称性图形,找出中间点,行数7行可等价为range[-3,3],
法一: line=int(input('line you want')) for i in range(-line//2,line//2+1): if i<0: print(' '*(-i)+'*'*(line+2*i)) else: print(' '*i+'*'*(line-2*i))
法二:(绝对值) for i in range(-3,4): print(' '*abs(i)+'*'*(7-2*abs(i)))
#打印对顶三角形 a=int(input('num')) b=a//2 for i in range(-b,b+1): print(' '*(b-abs(i))+'*'*(2*abs(i)+1))
#打印闪电 for i in range(-3,4): if i<0: print(' '*abs(i)+'*'*(4-abs(i))) elif i==0: print('*'*7) else: print(' '+'*'*(4-i))
#打印100以内斐波那契数列
法一: a=1 b=1 print(a) while b<100: print(b) a,b=b,a+b
法二: f0=1 f1=1 print(f0,f1,sep='\n') for i in range(1,101): fn=f1+f0 if fn<100: print(fn) f0=f1 f1=fn else: break
#求斐波那契数列第101项 f0=1 f1=1 for i in range(1,100): fn=f1+f0 f0=f1 f1=fn print(fn)
#求10万内所有素数(不使用列表集合之类的方法).
思路:主要考虑怎样解决效率的问题…
低效率代码示例: n=int(input('range')) for i in range(1,n): for a in range(2,i): if i % a == 0: break else: print(i)
法一:(利用了边界值,算到给定范围的开方附近(省了一半计算),+1是为了避免int向下取整时漏掉一个) num=int(input('range')) strs = '' for i in range(2,num): for c in range(2,int(i**0.5)+1): if i%c == 0: break else: strs += str(i)+' ' print(strs)
法二:(设置步长把所有偶数跳过,算到给定开方附近) print(2) for i in range(3,100001,2): if i>10 and i%10 == 5: continue else: for j in range(2,int(i**0.5+1)): if i%j == 0: break else: print(i)
法三:(利用素数定理,大于等于5的质数一定和6的倍数相邻) #大于等于5的质数一定和6的倍数相邻` n=int(input('range')) print(2,'\t',3,'\t',end=' ') n=n//6+1 for i in range(1,n): k1=6*i-1 tmp=int(k1**0.5) for num in range(2,tmp+1): if k1%num == 0: break else: print(k1,'\t',end=' ') k2=6*i+1 tmp=int(k2**0.5) for num in range(2,tmp+1): if k2%num == 0: break else: print(k2,'\t',end=' ')
#输入n个数,求每次输入后的算术平均数
#打印对顶三角形