題目1:有1、2、3、4四個數,能組成多少個互不相同且無重復的三位數?都是多少?
list_num=[1,2,3,4]
all_num=[]
for i in list_num:
? ? for j in list_num:
? ? ? ? for k in list_num :
? ? ? ? ? ? if (i!=j) and (i!=k) and (j!=k):
? ? ? ? ? ? ? ? num=i*100+j*10+k
? ? ? ? ? ? ? ? all_num.append(num)
print(all_num)?
print('A total of %d numbers.' %len(all_num))
題目2:企業發放的獎金根據利潤提成。
? ? 低于或等于10萬元時,獎金可提成10%;
? ? 高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可提成7.5%;
? ? 20萬到40萬之間時,高于20萬元的部分可提成5%;
? ? 40萬到60萬之間時,高于40萬元的部分,可提成3%;
? ? 60萬到100萬之間時,高于60萬的部分,可提成1.5%;
? ? 超過100萬元的部分按1%提成;
? ? 從鍵盤輸入當月利潤,求應發獎金總數。
while True:
? ? num=input('請輸入利潤:').strip()
? ? if num.isdigit():
? ? ? ? pass
? ? else :
? ? ? ? print('輸入的利潤必須為數字')?
? ? ? ? continue
? ? num=int(num) ? ?#轉換為整數類型
? ? if num > 1000000 :
? ? ? ? profit = (num-1000000)*0.01 + 400000*0.015 + 200000 *0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
? ? ? ? break
? ? elif num > 600000 :
? ? ? ? profit = (num-400000)*0.015 + 200000 *0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1?
? ? ? ? break
? ? elif num > 400000 :
? ? ? ? profit = (num-200000) *0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
? ? ? ? break
? ? elif num > 200000 :
? ? ? ? profit = (num-200000)*0.05 + 100000*0.075 + 100000*0.1
? ? ? ? break
? ? elif num > 100000 :
? ? ? ? profit = (num-100000)*0.075 + 100000*0.1
? ? ? ? break
? ? else :
? ? ? ? profit = num*0.1
? ? ? ? break
print('應發獎金總數為:%d' %profit)
題目3:一個整數,它加上100后是一個完全平方數。再加上168又是一個完全平方數,問該數是多少。
?
import math
int_num=0
while True:
? ? num1=math.sqrt(int_num+100)
? ? num2=math.sqrt(int_num+168)
? ? if num1==int(num1) and num2 == int(num2):
? ? ? ? break
? ? int_num += 1
print('該整數為 %d' %int_num)
題目4:輸入某年某月某日,判斷這一天是這一年的第幾天。(格式 如:19870604)
?
from builtins import len
leap_year={'01':31,'02':29,'03':31,'04':30,'05':31,'06':30,
? ? ? ? ? ?'07':31,'08':31,'09':30,'10':31,'11':30,'12':31} ? ?#閏年每月最大天數
comm_year={'01':31,'02':28,'03':31,'04':30,'05':31,'06':30,
? ? ? ? ? ?'07':31,'08':31,'09':30,'10':31,'11':30,'12':31} ? ? #平年每月最大天數
while True:
? ? num = input('請輸入日期,格式如19540105:')
? ? if num.isdigit() and len(num)==8 : ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? pass
? ? else :
? ? ? ? print('格式錯誤,請重新輸入')
? ? ? ? continue
? ? year_num=int(num[:4])?
? ? month_num=num[4:6]
? ? day_num=int(num[6:])
? ? if (int(month_num)>12) or (int(month_num)<=0): ? ? #月份錯誤時,重新輸入,'01'字符串轉換為整數時,會舍棄0,無法遍歷字典
? ? ? ? ? ? print('月份輸入錯誤,請重新輸入。')
? ? ? ? ? ? continue
? ? days=0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #定義天數
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? if ((year_num%100==0) and (year_num%400 == 0)) or ((year_num%100 !=0) and (year_num%4 == 0)): ? #如果是閏年
? ? ? ? if (day_num > leap_year[month_num]) or (day_num <= 0): #日期錯誤時重新輸入
? ? ? ? ? ? print('此月份中沒有這一天,請重新輸入。')
? ? ? ? ? ? continue
? ? ? ? for i in leap_year.keys(): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #遍歷月份
? ? ? ? ? ? if int(i) < int(month_num):
? ? ? ? ? ? ? ? days = days + leap_year[i]
? ? ? ? ? ? elif int(i)==int(month_num):
? ? ? ? ? ? ? ? days = days + day_num
? ? else: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #如果是平年
? ? ? ? if (day_num > comm_year[month_num]) or (day_num <= 0): ?#日期錯誤時重新輸入
? ? ? ? ? ? print('此月份中沒有這一天,請重新輸入。')
? ? ? ? ? ? continue
? ? ? ? for i in comm_year.keys(): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #遍歷月份
? ? ? ? ? ? if int(i) < int(month_num):
? ? ? ? ? ? ? ? days = days + comm_year[i]
? ? ? ? ? ? elif int(i)==int(month_num):
? ? ? ? ? ? ? ? days = days + day_num
? ? print('這一天是今年的第 %d 天' %days)
? ? break
題目5:輸入三個整數x,y,z,請把這三個數從小到大輸出。
?
def isint(num):
? ? while True:
? ? ? ? a=input('請輸入整數 %s:' %num).strip()
? ? ? ? if a.isdigit() :
? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? print(' %s 不是整數,請重新輸入' %a)
? ? return a
dic={}
dic['x']=isint('x')
dic['y']=isint('y')
dic['z']=isint('z')
dic=list(dic.values())
dic.sort()
print(dic)
題目6:用*輸出字母c的圖案。
?
list_c=[' ?**** ',' * ? ?*','*','*','*',' * ? ?*',' ?**** ']
for i in list_c:
? ? print(i)
? ? ?
輸出結果:
? ****?
?* ? ?*
*
*
*
?* ? ?*
? ****
題目7:輸出9*9口訣表。
?
for i in range(1,10):
? ? j=1
? ? while j<=i:
? ? ? ? print('%d*%d=%-2d ' % (j,i,(i*j)),end='')
? ? ? ? j +=1
? ? print(end='\n')
輸出結果:
1*1=1 ?
1*2=2 ?2*2=4 ?
1*3=3 ?2*3=6 ?3*3=9 ?
1*4=4 ?2*4=8 ?3*4=12 4*4=16?
1*5=5 ?2*5=10 3*5=15 4*5=20 5*5=25?
1*6=6 ?2*6=12 3*6=18 4*6=24 5*6=30 6*6=36?
1*7=7 ?2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49?
1*8=8 ?2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64?
1*9=9 ?2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
題目8:斐波那契數列。即:0,1,1,2,3,5,8,13。
? 數學定義:F0=0,F1=1,Fn=f(n-1)+F(n-2)
?
def fibonacci_sequence(n):
? ? if n==0:
? ? ? ? return 0
? ? elif n==1:
? ? ? ? return 1
? ? else:
? ? ? ? return fibonacci_sequence(n-1)+fibonacci_sequence(n-2)
num=int(input('請輸入一個整數:'))
for i in range(num):
? ? val=fibonacci_sequence(i)
? ? print('n=%d,Fn=%d ' %(i,val))
輸出結果:
請輸入一個整數:10
n=0,Fn=0?
n=1,Fn=1?
n=2,Fn=1?
n=3,Fn=2?
n=4,Fn=3?
n=5,Fn=5?
n=6,Fn=8?
n=7,Fn=13?
n=8,Fn=21?
n=9,Fn=34
題目9:輸出國際象棋棋盤。
?
a=' '
for i in range(8):
? ? for j in range(8):
? ? ? ? if i%2==0:
? ? ? ? ? ? if j%2==0 :
? ? ? ? ? ? ? ? print('\033[7;37m%s\033[0m' %a,end='')
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('\033[7;30m%s\033[0m' %a,end='')
? ? ? ? else:
? ? ? ? ? ? if j%2!=0 :
? ? ? ? ? ? ? ? print('\033[7;37m%s\033[0m' %a,end='')
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('\033[7;30m%s\033[0m' %a,end='')
? ? print(end='\n')
輸出結果:
wKioL1i8DYagYYA8AAALeRULEsM081.png-wh_50
題目10:古典問題,有一對兔子,從出生后第三個月起每個月都出生一對兔子,小兔子漲到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少。
?
def rabbit_num(n):
? ? if n==1:
? ? ? ? return 1
? ? elif n==2:
? ? ? ? return 1
? ? else:
? ? ? ? return rabbit_num(n-1)+rabbit_num(n-2)
num=int(input('請輸入一個整數:'))
for i in range(1,num+1):
? ? val=rabbit_num(i)
? ? print('n=%d,Fn=%d ' %(i,val))
?