1.需求:有10個(gè)球,3紅3藍(lán)4白,提供3個(gè)盒子,每個(gè)盒子里必須有1個(gè)白球(隨機(jī)數(shù)/while循環(huán)/遍歷)
import random
boxs = [[],[],[]]
balls = ['紅','紅','紅','藍(lán)','藍(lán)','藍(lán)','白','白','白','白']
for i in boxs:
index = random.randint(7,len(balls) - 1) #balls的白球索引
i.append(balls[index]) # 往盒子扔球(是根據(jù)索引)
balls.pop(index) # 再從剛剛?cè)舆M(jìn)盒子的球,根據(jù)索引線索來刪除
for ball in balls:
boxs[random.randint(0, 2)].append(ball) #往三個(gè)盒子里隨機(jī)扔球
print(boxs)
2.需求:用戶名和密碼格式校驗(yàn)程序 ,要求從鍵盤輸入用戶名和密碼, 校驗(yàn)格式是否符合規(guī)則,用戶名長度6-20,
并且用戶名必須以字母開頭 ,如果不符合犬缨,打印出不符合的原因喳魏,并再次提示輸入(while/if判斷)
while True:
獲取用戶輸入
name = input("請輸入姓名(6-20):")
如果輸入“QUIT”則退出程序
if name == "QUIT":
break
gender = input("請輸入性別(男或女):")
company = input("請輸入公司:")
address = input("請輸入公司地址:")
phone = input("請輸入聯(lián)系方式(手機(jī)):")
檢測姓名輸入是否谷歌
if len(name)<6 and len(name)>20:
print("姓名長度只能是6-20位")
如果不正確直接重新開始 ,所以使用continue
continue
檢測電話號碼是否符合
if len(phone) != 11:
print("請輸入有效的電話號碼")
continue
控制性別的輸入
if gender not in "男女" and len(gender) != 1:
print("請輸入有效的性別(男或女)")
continue
控制所有數(shù)據(jù)不為空
if company=="" or address=="":
print(name,gender,company,address,phone)
print("輸入不能為空")
continue
print("添加成功")
print("="*20)
3.從鍵盤中輸入5個(gè)學(xué)生的名字遍尺,存儲到列表中截酷,然后打印出每個(gè)學(xué)生名字中的第2個(gè)字母(函數(shù)使用萌芽題, 把列表存儲放置在外面)
i = 1
student_list = []
while i <= 5:
student = input("請輸入第%d名學(xué)生的姓名:" % i)
student_list.append(student)
i +=
for stu in student_list:
print("%s的第二個(gè)字母為%s" % (stu, stu[1]))
4.函數(shù)中求兩個(gè)數(shù)字的和
def res(a, b):
i = a
j = b
n = 0
while i <= j: #這里之所以寫i是因?yàn)閍只是形參不是變量
n += i
i += 1
print(n)
res(5, 15)
5.第一題的函數(shù)封裝
import random
第一步輸入信息
def get_input_data():
while True:
r_nums = input('請輸入辦公室的個(gè)數(shù):')
t_nums = input('請輸入老師的個(gè)數(shù):')
對輸入的數(shù)字進(jìn)行判斷,注意類型要一致
if int(r_nums) <= int(t_nums):
return int(r_nums), int(t_nums)
print('教室數(shù)低于老師數(shù),請重新輸入')
---------------------------------------------------------------------------------
分配辦公室
def range_room(rooms_num, teachers_num): # 接收傳進(jìn)來的的實(shí)參(辦公室/老師)
# 創(chuàng)建辦公室列表,就是嵌套[]個(gè)數(shù)
rooms = []
while rooms_num >= 1:
rooms.append([])
rooms_num -= 1
遍歷出老師的個(gè)數(shù)
teachers = []
while teachers_num >= 1:
teachers_num -= 1
teachers.append('teacher%d'%(teachers_num + 1))
---------------------------------------------------------------------------------
# 開始安排辦公室
#1.先隨機(jī)選出N位老師,依次放到辦公室中
for room in rooms:
index = random.randint(0,len(teachers) - 1) # 編列老師的索引值,索引值的隨機(jī)數(shù)量是根據(jù)列表rooms的個(gè)數(shù),而不是teachers
teac = teachers.pop(index) # 刪掉的索引個(gè)數(shù) = room房間數(shù)
room.append(teac) # 這一步就是根據(jù)刪除的索引個(gè)數(shù) = room房間數(shù)條件讓每個(gè)房間都有一個(gè)人
2.將剩下的老師,再隨機(jī)分配
for teacher in teachers:
room_index = random.randint(0, len(rooms)-1)
rooms[room_index].append(teacher)
return rooms
def main():
rooms_num, teachers_num = get_input_data()
rooms = range_room(rooms_num, teachers_num)
print("分配結(jié)束后:", rooms)
- 需求:從鍵盤中輸入5個(gè)學(xué)生的名字乾戏,存儲到列表中迂苛,然后打印出每個(gè)學(xué)生名字中的第2個(gè)字母
def make_stu_list():
i = 1
student_list = []
while i <= 5:
student = input('請輸入第%d名學(xué)生的姓名:' % i)
student_list.append(student)
i += 1
return student_list
def print_mess():
student_list = make_stu_list() # 在函數(shù)1中是為了存儲5個(gè)學(xué)生的信息弄過來
for stu in student_list:
print('%s的第二個(gè)字母為%s' %(stu,stu[1]))
print_mess()
6.改文件名
list1 = os.listdir("../python28/") #記錄該文件夾里面所有的文件,以列表的形式
for i in list1:
os.rename("D:../python28/" + i, "D:../python28/" + i[:i.rfind('.')] + "[黑馬出品]" + i[i.rfind("."):])
改回來 os.rename("D:/python28/" + i,"D:/python28/" + i[:i.rfind('[')] + i[i.rfind(']'):])
格式 os.rename("目錄/hello.txt", "目錄/hello[黑馬出品].txt")
7.文件備份
old_name = input('請輸入你要備份的文件:')
new_name = old_name[:old_name.rfind('.')] + "副本" + old_name[old_name.rfind('.'):]
with open(old_name,"r",encoding="utf-8") as r:
content = r.read()
with open(new_name,"w",encoding="utf-8") as w:
w.write(content)
8.列表去重方法
import random
list1 = [random.randint(0,3) for i in range(10)]
print(list1)
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
else:
print(f"{ i }數(shù)據(jù)已經(jīng)在里面了")
9.求1-100間的偶數(shù)和
第一種:
a = sum([i for i in range(101) if i%2==0])
print(a)
第二種:
def fun():
i = 0
j = 0
while i < 101:
if i % 2 == 0:
j += i
i += 1
return j
print(fun())
10.需求:去除列表中長度大于3的值
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
a=[name.upper() for name in names if len(name)>3]
理解:?[表達(dá)式 for 變量(遍歷得到的值) in 列表] 或者 [表達(dá)式 for 變量(遍歷得到的值) in 列表 if 條件]
print(a)
a 的結(jié)果 ['ALICE', 'JERRY', 'WENDY', 'SMITH']
11.需求:在列表中篩選出大于2000的值
list = [12,3243,32,34234,32]
a = [x for x in list if x > 2000]
print(a)
這里要注意的地方是:列表中都是int型,所以x>2000可以鼓择,如果兩者類型不一樣的話就要轉(zhuǎn)成一樣的類型