11、題目:判斷101-200之間有多少個素數,並輸出所有素數。
#質數只能被1和自己本身整除,也稱為素數
for i in range(101,201):
for k in range(2,i):
if i%k==0:
break
else:
print(i,'是質數')
12、打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
注意:python3中/結果為小數,所以最好用//
for n in range(100,1000):
i=n // 100
j=n // 10 % 10
k=n % 10
if n == i ** 3 + j ** 3 + k ** 3:
print(n)
13、將一個正整數分解質因數。例如:輸入90,打印出90=233*5。
import math
num = int(input('輸入一個整數:'))
arr = []
while num>1:
for i in range(2,int(math.sqrt(num))+1): # 因為題目是一個沒寫范圍正整數,開方可以有效減少該值過大時候的計算量
if num%i==0:
arr.append(i)
num = num//i
break
else:
arr.append(num)
break
print(arr)
14、利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示
score=int(input('請輸入分數'))
if score>=90:
s='A'
elif score>=60 and score<=89:
s = 'B'
elif score<60:
s = 'C'
print('你的分數%d,等級為:%s'%(score,s)
15、輸出指定格式的日期
import datetime
if __name__ == '__main__':
# 輸出今日日期,格式為 dd/mm/yyyy。更多選項可以查看 strftime() 方法
print(datetime.date.today().strftime('%d/%m/%Y'))
# 創建日期對象
miyazakiBirthDate = datetime.date(1941, 1, 5)
print(miyazakiBirthDate.strftime('%d/%m/%Y'))
# 日期算術運算
miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
# 日期替換
miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
16、輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
count=0
count1=0
count2=0
count3=0
s=input('請輸入字符:')
for i in s:
if i.isdigit():
count=count+1
elif i.isalpha():
count1=count1+1
elif i.isspace():
count2=count+1
else:
count3=count3+1
print('字母%s個,數字%s個,空格%s個,其他%s個'%(count1,count,count2,count3))
17、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。
#例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制。
a=input('被加數字:')
n=int(input('加幾次?:'))
result=0
for i in range(n):
result+=int(a)
a+=a[0]
print('第%s個數%s'%(i+1,a))
print(result)
18、兔子問題
m1=1 # 滿1月
m2=0 # 滿倆月(下個月生兔子)
mm=0 # 可以月月生兔子了
for i in range(1,10):
# 過了1個月后
mm = mm+m2 # 加入新增成年的兔子
m2 = m1 # 滿月的變成滿倆月
m1 = mm # 這個月新出生兔子
print(i,mm+m1+m2) # 每個月有多少對兔子
19、一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程找出1000以內的所有完數。
for num in range(1,1000):
l=[]
for i in range(1,num):
if num%i==0:
l.append(i)
if sum(l)==num:
print(num,l)
20、一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
l=[100]
h=100
print('第一次從100米落下,經過%s米,落地反彈%s米'%(h,h/2))
for i in range(2,11):
l.append(100)
h=h/2
print('第%s次從%s米落下,經過%s米,落地反彈%s米' % (i,h,sum(l),h/2))
21、猴子吃桃問題
猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。
以后每天早上都吃了前一天剩下的一半零一個。
到第10天早上想再吃時,見只剩下一個桃子了。
求第一天共摘了多少。
num=1
for i in range(10-1):
num=(num+1)*2
print(num)
22、題目022:兩個乒乓球隊進行比賽,各出三人。
甲隊為a,b,c三人,乙隊為x,y,z三人。
已抽簽決定比賽名單。有人向隊員打聽比賽的名單。
a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單
for a in ['x','y','z']:
for b in ['x','y','z']:
for c in ['x','y','z']:
if a!=b and b!=c and a!=c:
if a!='x' and c!='x' and c!='z':
print('a'+a ,'b'+b ,'c'+c)
23、題目023:
打印出如下圖案(菱形):
*
s = '*'
for i in range(1, 8, 2):
print((s*i).center(7))
for i in reversed(range(1, 6, 2)):
print((s*i).center(7))
24、有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。
a=2.0
b=1.0
sum=0
for i in range(1,21):
sum=sum+a/b#求和
t=a#儲存a的值
a=a+b #每一個分子等於前一項分母和分子之和
b=t#把之前儲存的a的值重新賦值給b,因為每一項的分母等於前一項的分子
print(sum)
25、求1+2!+3!+…+20!的和
sum=0#定義求和
res=1#定義初始化變量
for i in range(1,21):
for n in range(1,i+1):
res=res*n
sum=sum+res
res=1#需要每次初始化為1
print(sum)
26、利用遞歸方法求5!。
def fun(x):
if x>1:
return x*fun(x-1)
else:
return x
print(fun(5))
27、利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來
def output(s,l):
if l==0:
return
print (s[l-1])
output(s,l-1)
28、5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
age=8
for i in range(1,6):
age+=2
print('第%s名年齡為%s'%(i,age))
def age(n):
if n == 1: c = 10
else: c = age(n - 1) + 2
return c
print age(5)
29、給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字
x = int(input("請輸入一個數:\n"))
a = x // 10000
b = x % 10000 //1000
c = x % 1000 //100
d = x % 100 //10
e = x % 10
if a != 0:
print("5 位數:", e, d, c, b, a)
elif b != 0:
print("4 位數:", e, d, c, b)
elif c != 0:
print("3 位數:", e, d, c)
elif d != 0:
print("2 位數:", e, d)
else:
print("1 位數:", e)
num = 12345
s = str(num)
print(len(s))
print(s[::-1])
30、一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
s=str(input('請輸入一個5位整數\n'))
for i in range(len(s)):
if s[0]==s[-1] and s[1]==s[-2] and len(s)==5:
print(s,'是回文數')
break
else:
print(s,'不是回文數')
break
31、 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
week = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday']
num=input('請輸入星期的第一個字母\n').upper()
if num.isdigit():
print('不能輸入數字')
else:
if num=='M':
print('星期一',week[0])
elif num=='T':
num=input('請再次輸入第二個字母\n').upper()
if num=='U':
print('星期二', week[1])
elif num=='H':
print('星期四', week[3])
else:
print('輸入不正確')
elif num=='W':
print('星期三', week[2])
elif num=='F':
print('星期五', week[4])
elif num=='S':
num=input('請輸入第二個字母\n').upper()
if num=='A':
print('星期六',week[5])
elif num=='U':
print('星期日',week[6])
else:
print('輸入不正確')
32、按相反的順序輸出列表的值。
l=['5','6','8']
l.reverse()
print(l)
l=['5','6','8']
for i in l[::-1]:
print(i)
33、按逗號分隔列表。
l=['1','2','3','4','5','6']
print(','.join(l))
34、練習函數調用
def fun():
print('2018即將過完')
def hah():
print('任何人都應該被關愛')
if __name__=='__main__':
fun()
hah()
35、文本顏色設置
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的顏色字體?" + bcolors.ENDC)
36、100之間的素數
l=[2]
for i in range(3,100):
for n in range(2,i):
if i%n==0:
break
else:
l.append(i)
print(l)
37、對10個數進行排序
print('-----請輸入10個數字-----')
n=1
l=[]
while n<11:
num=input('請輸入第%d個數\n'%n)
l.append(num)
n+=1
print(sorted(l))
38、求一個3*3矩陣主對角線元素之和
str = input('請輸入9個數字,用空格隔開,以形成3*3矩陣:\n')
n = [int(i) for i in str.split(' ')] #獲取9個數字
mx = [] #存儲矩陣
for i in range(3):
mt = [] #收集矩陣中每行的數字列表
for j in range(3):
mt.append(n[i*3 + j])
mx.append(mt) #每行數字存儲進mx列表
print(mt)
print(mx)
sum1 = 0
sum2 = 0
for i in range(3):
sum1 += mx[i][i]
sum2 += mx[2-i][i]
print('\方向對角線3元素之和為:%s' % sum1)
print('/方向對角線3元素之和為:%s' % sum2)
l=[[5,2,3],[4,5,6],[7,8,10]]
for k in l:
print(k)
sum=0
sum1=0
for i in range(len(l)):
sum+=l[i][i]
sum1+=l[i][2-i]
print('\\方向對角線元素之和',sum)
print('/方向對角線元素之和',sum1)
39、有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中
import random
l=[1,2,3,4,5,6]
index=random.randint(1,len(l))
s=int(input('請輸入一個數字'))
l.insert(index,s)
print(sorted(l))
40、將一個數組逆序輸出
l=[5,8,3,6,4,7,9,1]
l.reverse()
print(l)
41、模仿靜態變量的用法
如果是函數中的局部變量,每次調用函數都會初始化。而類中的變量,創建類的時候初始化,每次執行類中的函數的時候,不會初始化類變量。看起來是想說這么個意思
def varfunc():
var = 0
print 'var = %d' % var
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# 類的屬性
# 作為類的一個屬性吧
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print self.StaticVar
print Static.StaticVar
a = Static()
for i in range(3):
a.varfunc()
42、學習使用auto定義變量的用法
局部變量和全局變量的應用域
num = 2
def autofunc():
num = 1
print 'internal block num = %d' % num
num += 1
for i in range(3):
print 'The num = %d' % num
num += 1
autofunc()
43、模仿靜態變量(static)另一案例
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print 'nNum = %d' % self.nNum
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print 'The num = %d' % nNum
inst.inc()
