经典问题:

1、输入某年某月某日,判断这是这一年的第几天

提示:注意闰年且输入月份大于2时需要考虑多加一天

year = int(input('year:\n'))
month=int(input('month:\n'))
day=int(input('day:\n'))
print('-'*20)
day +=(month-1)*30
if month<9:
	dday += month //2
else:
	day += (month+1) //2
if month >2:
	if year % 400 ==0 or year % 4 ==0 and year % 100 != 0:
		day -= 1
	else:
		day -=2
print('今天是今年的第%d天'%day)

输出如下:

python经典100题 python经典题型_经典习题、基础练习

 

2、猴子吃桃问题:

猴子第一天摘了若干个桃子,当即吃了一半,还闲不过瘾,又多吃了一个,以后每天吃前一天剩余的一半零一个,到第十天的时候发现只有一个桃子了,问一共摘了多少桃子

分析:逆向思维,从后面向前推

x2=1
for day in range(9,0,-1):
	x1=(x2+1)*2
	x2=x1
print (x1)

输出如下:

python经典100题 python经典题型_经典习题、基础练习_02

3、输入一行字符串,统计其中的字母、数字、空格

import string 
s=input('input a string :\n')
letters=0
space=0
digit=0
others=0
for c in s:
      if c.isalpha():
 	        letters+=1
      elif c.isspace():
 	        space+=1
      elif c.isdigit():
 	        digit+=1
      else:
 	        others+=1
print('char=%d,space=%d,digit=%d,others=%d'%(letters,space,digit,others))

输出如下:

python经典100题 python经典题型_git_03

4、打印爬楼梯

'''
打印楼梯,同时在楼梯上方打印两个笑脸
分析:
用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数
'''
import sys
sys.stdout.write(chr(1))
sys.stdout.write(chr(1))
print('')
for i in range(1,11):
	for j in range(1,i):
		sys.stdout.write(chr(219))
		sys.stdout.write(chr(219))
	print('')

输出如下:

python经典100题 python经典题型_经典习题、基础练习_04

5、一个球从一百米的高空落下,问第十次它可以弹起的高度,以及走过路程

sn=100.0
hn=sn/2
for n in range(2,11):
	sn+=2*hn
	hn/=2
print('total of road is %f'%sn)
print('the tenth is %f meter'%hn)

输出如下:

python经典100题 python经典题型_python经典100题_05

6、计算2/1,3/2,5/3,8/5.,13/8。。。前20项的和

分析提示:抓住分子分母的变化规律

方法一:
a=2.0
b=1.0
s=0
for n in range(1,21):
	s+=a/b
	t=a
	a=a+b
	b=t
print(s)

方法二:
s=0.0
a=2.0
b=1.0
for n in range(1,21):
	s+=a/b
	b,a=a,a+b
print(s)
'''

输出结果:

python经典100题 python经典题型_经典习题、基础练习_06

 

扩展思考:计算1!+2!+3!+....+20的和

方法一:
n=0
s=0
t=1
for n in range(1,21):
	t*=n
	s+=t
print('1!+2!+...+20!=%d'%s)

方法二:
s=0
l=range(1,21)
def op(x):
	r=1
	for i in range(1,x+1):
		r*=i
	return(r)
s=sum(map(op,l))
print('从一到二十的阶乘之和为:%d'%s)

输出如下:

python经典100题 python经典题型_python经典100题_07

 

7、用递归的方法计算5!

def fact(j):
	sum=0
	if j==0:
		sum=1
	else:
		sum=j*fact(j-1)
	return(sum)
for i in range(5):
	print('%d!=%d'%(i,fact(i)))

输出如下:

python经典100题 python经典题型_经典习题、基础练习_08

 

8、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请该数是多少,有多少

分析:假设为x

  则:x+100=n^2,x+100+168=m^2

  计算等式:m2-n2=(m+n)(m-n)=168

    设置:m+n=i,m-n=j,  i*j=168,i和j至少一个是偶数

    可得:m=(i+j)/2,n=(i-j)/2,i和j都是偶数,要末就是奇数

   从上面可以知道,i与j均是大于等于2的偶数

   由于i*j=168,j>=2,则1<i,168 /2+1

   最后循环

count=0
for i in range(1,85):
	if 168 %i == 0:
		j=168/i
		if i > j and (i+j) % 2 ==0 and (i-j)%2 ==0:
			m = (i+j)/2
			n = (i-j)/2
			x=n*n-100
			print(x)
			count +=1
print('共计输出结果:',count,'个')

输出如下:

python经典100题 python经典题型_完全平方数_09

 

9、斐波那契数列

def num(n):
	a,b = 1,1
	for i in range (n-1):
		a,b = b,a+b
	return(a)
print(num(10))

输出结果:

python经典100题 python经典题型_git_10

10、暂停一秒输出

分析:

在python中有time模块和calender模块可以用于格式化日期和时间

import time
l=[1,2,3,4,5,6]
for i in range(len(l)):
	print(l[i])
	time.sleep(5)

输出如下: 

python经典100题 python经典题型_经典习题、基础练习_11

       这个结果可能不是那么明显,因为我是从中间截取的,因此还没有输出完,在练习的时候结合开发工具可以明显的看到输出的变化情况。 

       这次的十道题都是比较经典的例题,可以多多练练,我也是看了许多资料,发现在很多地方都是经常出现,比较适合我们做一些练习的,有些程序也许不是最好的方法,如果可以通过自己的想法转化代码,我相信你的收获一定会是特别的巨大。因此,还是多思考,大家一起进步吧。

python经典100题 python经典题型_完全平方数_12