有四個數字:
1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少?
import itertools
a = ('1','2','3','4')
for i in range(1,5):
for k in itertools.permutations(a,i):
if 3 == len(k):
print(''.join(k))
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if(i != k) and (i != j) and (j != k):
print(i,j,k)
企業發放的獎金根據利潤提成。
利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
b = [1000000,600000,400000,200000,100000,0]
r = [0.01,0.015,0.03,0.05,0.075,0.1]
cou = 0
you = int(input("你的業績:"))
for i in range(len(b)):
if you > b[i]:
cou += (you - b[i]) * r[i]
print('提成額度',you-b[i],'提成點',str(r[i]*100)+'%','獎金:',(you - b[i]) * r[i])
you = b[i]
print(cou)
一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
# 設這個數是 n,
# n+100 = a^2,
# a^2+168=b^2,
# 所以 (b+a)(b-a)=168=84*2 = 42*4 = 28*6 = 14*12,
# 由 b+a=84,b-a=2 解得 a=(84-2)/2=41,所以 n=41^2-100 = 1581,
# 由 b+a=42,b-a=4 解得 a=(42-4)/2=19,所以 n=19^2-100=261,
# 由 b+a=28,b-a=6 解得 a=(28-6)/2=11,所以 n=11^2-100 = 21 ,
# 由 b+a=14,b-a=12 解得 a=(14-12)/2=1,所以 n=1^2-100 = -99
for i in range(1, 85):
if 168 % i == 0:
j = 168 / i
x = 168 / j
a = (j-x)/2
n = a*a-100
if n - int(n) == 0:
print(int(n))
輸入某年某月某日,判斷這一天是這一年的第幾天?
date = input("請輸入日期<例 2019-10-08>:")
days = (0,31,59,90,120,151,181,212,243,273,304,334)
sum = 0
leap = 0
try:
y,m,d = date.split('-')
if 0 < int(m) <= 12:
sum = days[int(m)-1]
sum += int(d)
if (int(y) % 400 == 0) or ((int(y) % 4 == 0) and (int(y) % 100 != 0)):
leap = 1
if (leap == 1) and (int(m) > 2):
sum += 1
print(sum)
else:
print("月份輸入錯誤")
except Exception as a:
print("請按照提示輸入")
輸入三個整數x,y,z,請把這三個數由小到大輸出。
li = []
for i in ("x","y","z"):
inp = input("輸入 %s 數字:" %i)
li.append(int(inp))
li.sort()
print(li)
輸出 9*9 乘法口訣表
for i in range(10):
for j in range(1,i+1):
print("%d*%d=%d"%(j,i,i*j),end=' ')
print()
暫停一秒輸出,並格式化當前時間。
import time,datetime
print(datetime.datetime.now())
time.sleep(1)
print(datetime.datetime.now())
time.sleep(1)
print(time.localtime())
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime()))
有一對兔子,
從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
a = 0 #1,1 2 3 5 8 13 21 34
b = 1 #1 2 3 5 8 13 21 34 55
for i in range(1, 13):
print('%s月:有%s只兔子' % (i, b))
a, b = b, a + b
判斷101-200之間有多少個素數,並輸出所有素數
cou = 0
for i in range(101, 201):
k = 0
for j in range(2, i):
if i % j == 0:
k += 1
#print(i, j, end=' ')
if k == 0:
cou += 1
print(i)
print("總共" + str(cou) + "個素數")
檢查網站是否可以正常訪問
import requests
for i in ur:
try:
url = 'http://'+i
r = requests.get(url)
if r.status_code == 200:
print(url)
except Exception as err:
print()
打印出所有的"水仙花數"
所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
for x in range(100,1000):
a = str(x)
if int(a[0])**3+int(a[1])**3+int(a[2])**3 == x:
print(x)
將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5
while True:
x = int(input("輸入整數:"))
print('%d='%x,end='')
while x > 1:
for i in range(2,x+1):
if x % i == 0:
x = int(x/i)
if x == 1:
print('%d' % i, end='')
else:
print('%d*' % i,end='')
print()
輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
def sum(count):
number = 0
string = 0
space = 0
other = 0
for i in count:
if i.isdigit():
number += 1
elif i.isalpha():
string += 1
elif i.isspace():
space += 1
else:
other +=1
return '數字:'+str(number) + ';字母:'+ str(string) + ';空格:'+ str(space) +';其他:' + str(other)
print(sum('my name is fana 1234567'))
xx = input("輸入:")
print(sum(xx))
求s=a+aa+aaa+aaaa+aa...a的值
其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制
number = int(input("請輸入數字:"))
frequency = int(input("次數:"))
x = number
a = []
sum = 0
for i in range(frequency):
a.append(x)
c = str(x)+str(number)
x = c
for j in range(len(a)):
sum += int(a[j])
for k in a:
if k == a[-1]:
print(k,end='')
else:
print(str(k),end='+')
print('=%d' % sum,end='')
一球從100米高度自由落下
每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
ball = 100
hop = []
for i in range(10):
if i == 0:
hop.append(ball)
else:
hop.append(ball*2)
ball = ball / 2
print("第%s次,反彈%s米" % (i+1, ball))
print("第10次落地,共經歷%s米"%(sum(hop)))
猴子吃桃問題:
猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
x = 1
for i in range(9,0,-1):
print(i,end=' = ')
x = (x+1)*2
print(x)
一個數如果恰好等於它的因子之和,這個數就稱為"完數"。
例如6=1+2+3.編程找出1000以內的所有完數。
from sys import stdout
for j in range(2, 1001):
k = []
n = -1
s = j
for i in range(1, j):
if j % i == 0:
n += 1
s -= i
k.append(i)
if s == 0:
print(j)
for i in range(n):
stdout.write(str(k[i]))
stdout.write(' ')
print(k[n])
兩個乒乓球隊進行比賽,各出三人。
甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
for i in itertools.permutations(red):
for j in zip(i, blue):
if j in [('a','x'),('c','x'),('c','z')]:
break
else:
for k in range(len(red)):
print(i[k], blue[k])
#2 ==========================
for player1 in 'cab':
for player2 in 'xyz':
if player1 == 'c' and player2 != 'x' and player2 != 'z':
remain2 = set('xyz') - set(player2)
print("{}----{}".format(player1,player2))
if player1 == 'a' and player2 != 'x' and player2 in remain2:
remain2 -= set(player2)
print("{}----{}".format(player1,player2))
if player1 == 'b' and player2 in remain2:
print("{}----{}".format(player1,player2))
打印出如下圖案(菱形):
*
***
*****
*******
*****
***
*
#==1============
a = "*"
c = 1
b = 4
for i in range(b):
c += 2
for i in range(b):
print(a.center(c,' '))
a = a + "**"
for j in range(b):
if j == 0:
a = a[:-2]
continue
else:
a = a[:-2]
print(a.center((c),' '))
#==2============
from sys import stdout
for i in range(4):
for j in range(2 - i + 1):
stdout.write(' ')
for k in range(2 * i + 1):
stdout.write('*')
print()
for i in range(3):
for j in range(i + 1):
stdout.write(' ')
for k in range(4 - 2 * i + 1):
stdout.write('*')
print()
有一分數序列
2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
a = 2
b = 1
count = 0
for i in range(20):
count += a/b
b, a = a, a+b
print("%s = %s" %(i,count))
求1+2!+3!+...+20!的和
# c = 0
# for i in range(1,21):
# c = c+i
# print("%s = %s + %s"%(c,c-i,i))
# ==== 后面有! 是階乘 ====
c = 1
x = 0
for i in range(1,21):
c = c * i
x = x +c
#print("%s! = %s" %(i,c))
if i == 20:
print("%s" % (i), end='')
else:
print("%s+" %(i),end='')
print("=%s"%x,end='')
利用遞歸方法求5!
def sum(n):
if n == 0:
con = 1
else:
con = n * sum(n - 1)
return con
print(sum(5))
利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來
def fan(inp):
if len(inp) == 1:
print(inp[-1])
else:
print(inp[-1])
fan(inp[:-1])
a = input("請輸入:")
fan(a)
有5個人坐在一起,問第五個人多少歲?
他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
def age(x):
if x == 1:
one = 10
else:
one = age(x-1) + 2
return one
print(age(5))
給一個不多於5位的正整數
要求:一、求它是幾位數,二、逆序打印出各位數字
x = input("請輸入一個數:")
if not x.isdigit():
print("不是數字")
else:
n = str(x)
print('length:', len(n))
print('numbers: ',end='')
for i in range(len(n)-1, -1, -1):
print(n[i],end=' ')
一個5位數,判斷它是不是回文數。
即12321是回文數,個位與萬位相同,十位與千位相同
x = input("請輸入一個數:")
t = True
if x.isdigit():
n = str(x)
for i in range(len(n)):
print(n[i],n[-i-1])
if n[i] != n[-i-1]:
t = False
break
else:
print("請輸入數字")
if t:
print("%s = %s 是回文數" %(x,t))
else:
print("%s = %s 不是回文數" %(x,t))
## 2 ###################
if len(n) == 5:
if n == "".join(reversed(n)):
print('{0}是回文數'.format(n))
else:
print('{0}不是回文數'.format(n))
else:
print("輸入錯誤")
文本顏色設置
顯示方式 | 效果 | 字體色 | 背景色 | 顏色 |
---|---|---|---|---|
0 | 默認 | 30 | 40 | 黑色 |
1 | 高亮 | 31 | 41 | 紅色 |
4 | 下划線 | 32 | 42 | 綠色 |
5 | 閃爍 | 33 | 43 | 黃色 |
7 | 反顯 | 34 | 44 | 藍色 |
8 | 不可見 | 35 | 45 | 紫紅色 |
22 | 非粗體 | 36 | 46 | 青藍色 |
24 | 非下划線 | 37 | 47 | 白色 |
25 | 非閃爍 | |||
27 | 非反顯 |
# 常見開頭格式:
# \033[0m 默認字體正常顯示,不高亮
# \033[32;0m 紅色字體正常顯示
# \033[1;32;40m 顯示方式: 高亮 字體前景色:綠色 背景色:黑色
# \033[0;31;46m 顯示方式: 正常 字體前景色:紅色 背景色:青色
# \033[1;31m 顯示方式: 高亮 字體前景色:紅色 背景色:無
print('\033[31m 字體紅色,但無背景色 \033[0m') # #紅色
print('\033[1;45m 字體不變色,有背景色 \033[0m') # 有高亮
print('\033[1;35;46m 字體有色,且有背景色 \033[0m') # 有高亮
print('\033[1;31;44m'+'*' * 45)
print(' 錯誤次數超限,用戶已被永久鎖定,請聯系管理員!') #字體顏色紅色反白處理
print('*' * 45 + "\033[1;31;44m")
按逗號分隔列表
a = [1,2,3,4,5,6]
for i in a:
if i == a[len(a)-1]:
print(i,end='')
else:
print(i,end=',')
## === 2 ===
str = ','.join(str(i) for i in a)
print(str)
按相反的順序輸出列表的值。
a = [1,2,3,4,5,6]
a.reverse()
print(a)
## --- 2 ----
for i in range(len(a)-1,-1,-1):
print(a[i])
請輸入星期幾的第一個字母來判斷一下是星期幾,
如果第一個字母一樣,則繼續判斷第二個字母。
week = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
a = []
inp = input("week:").upper()
for i in week:
if inp == i[0]:
a.append(i)
if len(a) >= 2:
inp1 = input("輸入第二個字母:")
for j in a:
if inp1 == j[1]:
print(j)
else:
print(''.join(a))
求100之內的素數
## 求100之內的素數
cou = 0
for i in range(1,101):
k = 0
for j in range(2,i):
if i % j == 0:
k += 1
if k == 0:
cou += i
print(i,end=',')
print("總和是%s" %cou)
對10個數進行排序。
li = [12,3,5,6,89,23,7,34,21,100]
for i in range(1,len(li)):
for j in range(len(li)-i):
if li[j] < li[j+1]:
temp = li[j]
li[j] = li[j+1]
li[j+1] = temp
print(li)
## == 2===
for i in range(9):
for j in range(i+1, 10):
if li[j-1] > li[j]:
a = li[j]
li[j] = li[j-1]
li[j-1] = a
print(li)
有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
li = [3, 5, 6, 7, 12, 21, 23, 34, 89, 100]
number = int(input("請輸入數字:"))
li2 = li
li2.append(number)
for i in range(len(li2)):
for j in range(i+1, len(li2)):
if li2[j-1] > li2[j]:
a = li2[j]
li2[j] = li2[j-1]
li2[j-1] = a
print(li2)
將一個數組逆序輸出。
li = [3, 5, 6, 7, 12, 21, 23, 34, 89, 90,100]
li.reverse()
print(li)
## === 2 ===
li2 = []
for i in range(len(li)-1,-1,-1):
li2.append(li[i])
print(li2)
## === 3 ===
for i in range(int(len(li)/2)):
li[i] = li[len(li) - i - 1]
li[len(li) - i - 1] = li[i]
print(li)
求一個3*3矩陣主對角線元素之和。
b = [[3, 5, 6], [7, 12, 21], [23, 34, 89]]
for i in range(3):
print(b[i][i])
sum1 = sum1 + b[i][i]
print(sum1)
統計 1 到 100 之和。
for i in range(1,101):
coun += i
print(coun)
計算字符串的長度
while True:
int = input(">>>\n")
if int == 'q':
exit('退出了')
else:
print('長度是:',len(int))
Python 兩個矩陣相加。
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
n = [[],[],[]]
for i in range(len(X)):
for j in range(len(Y)):
print("%s+%s=%s" %(X[i][j],Y[i][j],X[i][j]+Y[i][j]))
n[i].append(X[i][j]+Y[i][j])
print(n)
注冊用戶和登陸用戶(讀寫文本版)
username = input('請輸入你要注冊的用戶名:')
password = input('請輸入你要注冊的密碼:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
f.write('{}\n{}'.format(username,password))
print('恭喜您,注冊成功')
lis = []
i = 0
while i < 3:
usn = input('請輸入你的用戶名:')
pwd = input('請輸入你的密碼:')
with open('list_of_info',mode='r+',encoding='utf-8') as f1:
for line in f1:
lis.append(line)
if usn == lis[0].strip() and pwd == lis[1].strip():
print('登錄成功')
break
else:print('賬號和密碼錯誤')
i+=1
修改文件內容
with open('fan','r',encoding='utf-8') as f,open('fan.bak','w',encoding='utf-8') as f2:
for line in f:
if '黃曼' in line:
line = line.replace('黃曼','香兒') #把黃曼替換成香兒
f2.write(line)
import os
os.remove('fan')
os.replace('fan.bak','fan')
按要求完成下列轉化
list3 = [
{"name": "alex", "hobby": "抽煙"},
{"name": "alex", "hobby": "喝酒"},
{"name": "alex", "hobby": "燙頭"},
{"name": "alex", "hobby": "Massage"},
{"name": "wusir", "hobby": "喊麥"},
{"name": "wusir", "hobby": "街舞"},
]
# 如何把上面的列表轉換成下方的列表?
list4 = [
{"name": "alex", "hobby_list": ["抽煙", "喝酒", "燙頭", "Massage"]},
{"name": "wusir", "hobby_list": ["喊麥", "街舞"]},
]
#####==============#####
list4 = [{'name':None,'hobby':[]},{'name':None,'hobby':[]}]
for i in list3:
for k,v in i.items():
if v == 'alex':
list4[0]['name'] = v
list4[0]['hobby'].append(i['hobby'])
if v == 'wusir':
list4[1]['name'] = v
list4[1]['hobby'].append(i['hobby'])
print(list4)
輸出一個隨機6位數的密碼。
import random
####1.只有數字=========================
code = ""
for i in range(6):
add_num = random.randrange(10)
code+=str(add_num)
print(code)
####2.只有字母=======================
import string
#s = string.ascii_lowercase # 所有小寫字母(a-z)
s=string.ascii_letters #所有大小寫字母(a-z,A-Z)
# s=string.ascii_uppercase #所有大寫字母(A-Z)
a = ''
for i in range(6):
r = random.choice(s)
a += r
print(a)
####3.字母和數字混合的隨機驗證碼==============
#大寫字母 chr(random.randrange(65,91))
#小寫字母 chr(random.randrange(97,123))
def v_code():
code1 = ""
for i in range(6):
add=random.choice([random.randrange(10),chr(random.randrange(65,91)),chr(random.randrange(97,123))])
code+=str(add)
print(code1)
v_code()
生成某年的所有日期
import time
def dateRange(year):
fmt = '%Y-%m-%d'
bgn = int(time.mktime(time.strptime(year+'-01-01',fmt)))
end = int(time.mktime(time.strptime(year+'-12-31',fmt)))
list_date = [time.strftime(fmt,time.localtime(i)) for i in range(bgn,end+1,3600*24)]
return [i.replace('-','') for i in list_date]
print(dateRange('1991'))
求輸入數字的平方,如果平方運算后小於 50 則退出。
T = True
while T:
inp = input("請輸入:")
if inp.isdigit():
c = int(inp) * int(inp)
if c > 50:
print(c)
T = True
else:
print(c)
T = False
else:
print("請輸入數字")
兩個變量值互換。
def exchange(a,b):
a,b = b,a
return a,b
a = 12
b = 23
print(exchange(a,b))
數字比較。
def compare(i,j):
if i > j:
print('{} 大於 {}'.format(i, j))
elif i < j:
print('{} 小於 {}'.format(i, j))
elif i == j:
print('{} 小於 {}'.format(i, j))
else:
print('輸入錯誤')
sumber = input('請輸入2個數字用空格隔開:')
if ' ' in sumber:
try:
a, b = sumber.split(' ')
if a.isdigit() and b.isdigit():
compare(a,b)
else:
print("請輸入數字")
except Exception as error:
print('輸入有誤')
else:
print('請用空格分開')
編寫裝飾器,為多個函數加上認證功能。
要求只登陸成功一次,后續函數都無需在輸入用戶名
flag = False
def login(func):
def inner(*args,**kwargs):
global flag
if flag == True:
ret = func(*args,**kwargs)
return ret
else:
user = input('username:')
pawd = input("密碼:")
if user == 'fana' and pawd == '123456':
flag = True
ret = func(*args,**kwargs)
return ret
else:
print('登陸失敗')
return inner
@login
def shoplist_add():
print("購買一件商品")
@login
def shoplist_del():
print("別要了")
shoplist_add()
shoplist_add()
shoplist_del()
shoplist_add()
shoplist_del()
編寫裝飾器,為多個函數加上記錄調用功能,
要求每次調用都將被調用的函數名寫入文件
def func_log(fun):
def inner(*args,**kwargs):
ret = fun(*args,**kwargs)
with open("file.txt",'a+',encoding='UTF-8') as f1:
f1.write(fun.__name__+'\n')
return ret
return inner
@func_log
def func():
print('func')
@func_log
def fana():
print('fana')
編寫下載網頁內容的函數
要求功能:輸入一個url,函數返回下載頁面的結果,
然后為剛剛的函數編寫裝飾器,實現下載的網頁存放在文件中,如果文件內有值(文件大於0)就優先從文件讀取,否則就去下載
import requests,os
def cache(func):
def inner(*args,**kwargs):
a = args[0][11:-4]
ret = func(*args,**kwargs)
if not os.path.exists(a): #沒有這個文件就寫
with open(a,'w',encoding='utf-8') as f:
f.write(ret)
return ret
elif os.path.getsize(a): #文件大於0 就讀文件
with open(a,'r',encoding='utf-8') as f:
return f.readlines()
else: #如果有文件,但是0k 就重新寫
with open(a,'w',encoding='utf-8') as f:
f.write(ret)
return ret
return inner
@cache
def user_url(url):
res = requests.get(url)
res.encoding = 'utf-8'
return res.text
print(user_url('http://www.baidu.com'))
print(user_url('http://www.qq.com'))
處理文件
用戶指定要查找的文件和內容,將文件中包含要查找內容的每一行都輸出到屏幕
def check_file(filename,aim):
with open(filename,encoding='utf-8') as f: #句柄 : handler,文件操作符,文件句柄
for i in f:
if aim in i:
yield i
g = check_file('fana','生成器')
for i in g:
print(i.strip())
寫生成器
從文件中讀取內容,在每一次讀取到的內容之前加上‘***’之后再返回給用戶
def check_file(filename):
with open(filename,encoding='utf-8') as f: #句柄 : handler,文件操作符,文件句柄
for i in f:
yield '***'+i
for i in check_file('fana'):
print(i.strip())
現有兩個元組(('a'),('b')),(('c'),('d'))
請使用python中匿名函數生成列表[{'a':'c'},{'b':'d'}]
a = (('a'),('b'))
b = (('c'),('d'))
#1.用函數最簡單的做法
dic = {}
# def func():
# for i in zip(a,b):
# dic[i[0]] = i[1]
# print(dic)
# func()
#2.用到匿名函數,這樣做肯定不行.所以用到map,就變成這樣
def func(tup):
return {tup[0]:tup[1]}
print(list(map(func,zip(a,b))))
#3.轉成匿名函數。
res = map(lambda tup: {tup[0]: tup[1]}, zip(a, b))
print(list(res))
用map來處理字符串列表,把列表中的所有人都變成sb,比如:alex_sb
name = ["alex","wupeiqi","yuanhao","nezha"]
a = map(lambda i: i + '_sb', name)
for j in a:
print(j)
用filter函數處理數字列表,將列表中所有的偶數篩選出來
num = [1,2,3,4,5,6,7,8]
ret = filter(lambda i : i % 2 == 0,num)
print(list(ret))
#a = lambda i: [j for j in i if j % 2 == 0]
#print(a(num))
運行程序將內容分頁存儲,每頁5條,然后接收用戶輸入的頁碼,僅輸入當頁內容。
with open('fan','r',encoding='utf-8') as f:
li = f.readlines()
inp = int(input("請輸入頁碼:"))
page,yu = divmod(len(li),5)
if inp > page+1 or inp <= 0:
print('輸入錯誤')
else:
if inp == page+1:
for i in li[-yu:]:
print(i.strip())
else:
for i in range((inp-1)*5,inp*5):
print(li[i].strip())
用遞歸方式查找如下列表中66的位置
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(lis,sumber,start=0,end=None):
end = len(lis) if end is None else end
aim = (end - start) // 2 + start
if start > end or sumber > lis[-1]:
return '%s 不在列表中。' % sumber
else:
if lis[aim] > sumber:
return find(lis,sumber,start=start,end=aim-1)
elif lis[aim] < sumber:
return find(lis, sumber, start=aim+1, end=end)
else:
return '%s 的索引是 %s.' % (lis[aim],aim)
print(find(l,66))
#print(l.index(66))
畫圖,學用circle畫圓形
import tkinter
canvas = tkinter.Canvas(width=600, height=600, bg='yellow')
canvas.pack(expand=tkinter.YES, fill=tkinter.BOTH)
k = 1
j = 1
for i in range(0, 26):
canvas.create_oval(310 - k, 250 - k, 310 + k, 250 + k, width=1)
k += j
j += 0.3
tkinter.mainloop()
畫圖,學用line畫直線。
import tkinter
canvas = tkinter.Canvas(width=300, height=300, bg='green')
canvas.pack(expand=tkinter.YES, fill=tkinter.BOTH)
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_line(x0, y0, x0, y1, width=1, fill='red')
x0 = x0 - 5
y0 = y0 - 5
x1 = x1 + 5
y1 = y1 + 5
x0 = 263
y1 = 275
y0 = 263
for i in range(21):
canvas.create_line(x0, y0, x0, y1, fill='red')
x0 += 5
y0 += 5
y1 += 5
tkinter.mainloop()
###-----------------------------------------------------------
import turtle
def drawline(n):
t=turtle.Pen()
t.color(0.3,0.8,0.6) #設置顏色,在0--1之間
t.begin_fill() #開始填充顏色
for i in range(n): #任意邊形
t.forward(50)
t.left(360/n)
t.end_fill() #結束填充顏色
drawline(8)
###--------------------------------------------------
from tkinter import *
canvas=Canvas(width=300,height=300,bg='white')
canvas.pack(expand=YES, fill=BOTH)
x1,y1=50,20
x2,y2=100,20
x3,y3=75,40
x4,y4=75,100
canvas.create_line(x1,y1,x3,y3, width=3, fill='red')
canvas.create_line(x2,y2,x3,y3, width=3, fill='red')
canvas.create_line(x1,y1,x4,y4, width=3, fill='red')
canvas.create_line(x2,y2,x4,y4, width=3, fill='red')
mainloop()
畫圖,學用rectangle畫方形。
if __name__ == '__main__':
from tkinter import *
root = Tk()
root.title('Canvas')
canvas = Canvas(root, width=400, height=400, bg='yellow')
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_rectangle(x0, y0, x1, y1)
x0 -= 5
y0 -= 5
x1 += 5
y1 += 5
canvas.pack()
root.mainloop()
畫圖,五星紅旗
import turtle
turtle.speed(10)
turtle.hideturtle() #隱藏圖標
turtle.pencolor("red")
#外框
turtle.penup()
turtle.goto(-300, 200)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("red")
turtle.fd(600)
turtle.right(90)
turtle.fd(400)
turtle.right(90)
turtle.fd(600)
turtle.right(90)
turtle.fd(400)
turtle.right(90)
turtle.end_fill()
turtle.pencolor("yellow")
#大星星
turtle.penup()
turtle.goto(-275, 115)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.forward(90)
turtle.right(144)
turtle.forward(90)
turtle.right(144)
turtle.forward(90)
turtle.right(144)
turtle.forward(90)
turtle.right(144)
turtle.forward(90)
turtle.end_fill()
#小星星1
turtle.seth(0)
turtle.left(25)
turtle.penup()
turtle.goto(-187, 169)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.end_fill()
#小星星2
turtle.penup()
turtle.goto(-275, 115)
turtle.pendown()
turtle.seth(0)
turtle.left(21)
turtle.penup()
turtle.goto(-147, 133)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.end_fill()
#小星星3
turtle.penup()
turtle.goto(-275, 115)
turtle.pendown()
turtle.seth(0)
turtle.right(21)
turtle.penup()
turtle.goto(-147, 93)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.end_fill()
#小星星4
turtle.penup()
turtle.goto(-275, 115)
turtle.pendown()
turtle.seth(0)
turtle.right(25)
turtle.penup()
turtle.goto(-187, 41)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.right(144)
turtle.forward(30)
turtle.end_fill()
畫圖,綜合例子
from tkinter import *
canvas = Canvas(width=300, height=300, bg='green')
canvas.pack(expand=YES, fill=BOTH)
x0 = 150
y0 = 100
canvas.create_oval(x0 - 10, y0 - 10, x0 + 10, y0 + 10)
canvas.create_oval(x0 - 20, y0 - 20, x0 + 20, y0 + 20)
canvas.create_oval(x0 - 50, y0 - 50, x0 + 50, y0 + 50)
import math
B = 0.809
for i in range(16):
a = 2 * math.pi / 16 * i
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 * math.sin(a) * B)
canvas.create_line(x0, y0, x, y, fill='red')
canvas.create_oval(x0 - 60, y0 - 60, x0 + 60, y0 + 60)
for k in range(501):
for i in range(17):
a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 + math.sin(a) * B)
canvas.create_line(x0, y0, x, y, fill='red')
for j in range(51):
a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k - 1
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 * math.sin(a) * B)
canvas.create_line(x0, y0, x, y, fill='red')
mainloop()
畫圖:畫出橢圓
from tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30
canvas = Canvas(width=400, height=600, bg='white')
for i in range(20):
canvas.create_oval(250 - top, 250 - bottom, 250 + top, 250 + bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
打印出楊輝三角形(要求打印出20行)
# 楊輝三角是(a+b)的n次方展開后各項的系數,各行第一個數和最后一個數都是1,從第三行起第一個數和最后一個數外,其余各數是上一行同列和前一列兩數之和
# 可以這樣表示 li[i][j]=li[i-1][j]+li[i-1][j-1]
li = []
# 首先添加一個列表,每個列表有20個元素
for i in range(20):
li.append([])
for j in range(20):
li[i].append(0)
# 讓前后都是1
for a in range(20):
li[a][0] = 1
li[a][a] = 1
# 從第三行開始,中間數都是前個列表同列的和
for k in range(20):
for u in range(1,k):
li[k][u] = li[k-1][u] + li[k-1][u-1]
# 最后打印出來每個列表的值
for i in range(20):
for j in range(i+1):
print(li[i][j],end=' ')
print()
輸入3個數a,b,c,按大小順序輸出
def bijiao(*args):
args = list(args)
for i in range(1,len(args)):
for j in range(len(args)-i):
if args[j] > args[j+1]:
temp = args[j]
args[j] = args[j+1]
args[j + 1] = temp
return args
print(bijiao(12,56,34))
最大的與第一個元素交換,然后最小的與最后一個元素交換。
li = [18,13,9,2,22,1,23,10]
def large(arg):
max = 0
for i in range(1,len(arg)):
if arg[i] > arg[max]:
max = i
arg[max],arg[0] = arg[0],arg[max]
min = 0
for j in range(1,len(arg)):
if arg[j] < arg[min]:
min = j
arg[min],arg[-1] = arg[-1],arg[min]
print(li)
large(li)
print(li)
有n個數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數。
def move(li,m):
for i in range(1,m+1):
li.insert(0,li[-i])
for j in range(m):
del li[-1]
#### ====================####
def remove(li,m):
n = len(li)
end = li[-1]
for i in range(n-1,-1,-1):
li[i] = li[i-1]
li[0] = end
m -=1
if m >0:
move(li,m)
lis = [2, 8, 6, 1, 78, 45, 34, 9]
print(lis)
move(lis,5)
print(lis)
從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
inp = int(input("請輸入:"))
li = list(range(1,inp+1))
cou = 0
while len(li) > 1:
li2 = li[:] # 把原數組拷貝到新數組中,用於限制內層循環次數
for i in range(len(li2)):
cou += 1
if cou % 3 == 0: # 如果count能被3整除,則是報到3的人
li.remove(li2[i]) # 把報到3的人移除原數組,進行下一次循環
print(li)
####-----------------------------
i = 0
k = 0
m = 0
while m < len(li) - 1:
if li[i] != 0: k += 1
if k == 3:
li[i] = 0
k = 0
m += 1
i += 1
if i == len(li): i = 0
i =0
while li[i] == 0:i+=1
print(li[i])
編寫input()和output()函數輸入,輸出5個學生的數據記錄
N = 2
li = []
for i in range(N):
li.append(['',[]])
print(li)
lis = ["班級","分數","電話"]
def stu_input(stu):
for i in range(N):
stu[i][0]=input("請輸入 第%s個 學生信息。\n姓名:"%(i+1))
for j in lis:
if j == '班級':
stu[i][1].append(input(j + ':'))
else:
stu[i][1].append(int(input(j+':')))
def stu_output(stu):
for i in range(N):
print('姓名:%-10s'%(stu[i][0]))
v = (v for v in range(len(stu[i][1])))
for k in lis:
print('%s%s:%s'%(' '*4,k,stu[i][1][next(v)]))
stu_input(li)
print(li)
stu_output(li)
編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n
def calc(n):
cou = 0
if n % 2 == 0:
for i in range(2,n+1,2):
cou += 1 / i
else:
for i in range(1,n+1,2):
cou += 1 / i
print(cou)
calc(4)
找出最大的數字
li = [12,32,14,23,1,88,67]
a = 0
for i in li:
if a < i:
a = i
print(a)
#----------------------------
person = {"li": 18, "zhang": 2, "sun": 22,"wang": 50,}
b = 'li'
for k in person:
if person[b] < person[k]:
b = k
print(b,person[b])
五只猴子來分桃子
第一只猴子把這堆桃子平均分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
# 如果多了4個,那么沒有桃子被扔入海中,所以最小應該是5**5-4
def fn(n):
x = 5**n-4
print(x)
fn(5)
##==參考菜鳥如下:=============================
i = 0
j = 1
x = 0
while (i < 5):
x = 4 * j
for i in range(0, 5):
if (x % 4 != 0):
break
else:
i += 1
x = (x / 4) * 5 + 1
j += 1
print(x)
## ==============================
num=int(input("輸入猴子的數目:"))
def fn(n):
if n==num:
return(4*x) #最后剩的桃子的數目
else:
return(fn(n+1)*5/4+1)
x=1
while 1:
count=0
for i in range(1,num):
if fn(i)%4==0 :
count=count+1
if count==num-1:
print("海灘上原來最少有%d個桃子" % int(fn(0)))
break
else:
x=x+1