1.需求:有10個球,3紅3藍4白,提供3個盒子,每個盒子里必須有1個白球(隨機數/while循環/遍歷)
import random
boxs = [[],[],[]]
balls = ['紅','紅','紅','藍','藍','藍','白','白','白','白']
for i in boxs:
index = random.randint(7,len(balls) - 1) #balls的白球索引
i.append(balls[index]) # 往盒子扔球(是根據索引)
balls.pop(index) # 再從剛剛扔進盒子的球,根據索引線索來刪除
for ball in balls:
boxs[random.randint(0, 2)].append(ball) #往三個盒子里隨機扔球
print(boxs)
2.需求:用戶名和密碼格式校驗程序 ,要求從鍵盤輸入用戶名和密碼, 校驗格式是否符合規則,用戶名長度6-20,
并且用戶名必須以字母開頭 ,如果不符合,打印出不符合的原因,并再次提示輸入(while/if判斷)
while True:
獲取用戶輸入
name = input("請輸入姓名(6-20):")
如果輸入“QUIT”則退出程序
if name == "QUIT":
break
gender = input("請輸入性別(男或女):")
company = input("請輸入公司:")
address = input("請輸入公司地址:")
phone = input("請輸入聯系方式(手機):")
檢測姓名輸入是否谷歌
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
控制所有數據不為空
if company=="" or address=="":
print(name,gender,company,address,phone)
print("輸入不能為空")
continue
print("添加成功")
print("="*20)
3.從鍵盤中輸入5個學生的名字,存儲到列表中,然后打印出每個學生名字中的第2個字母(函數使用萌芽題, 把列表存儲放置在外面)
i = 1
student_list = []
while i <= 5:
student = input("請輸入第%d名學生的姓名:" % i)
student_list.append(student)
i +=
for stu in student_list:
print("%s的第二個字母為%s" % (stu, stu[1]))
4.函數中求兩個數字的和
def res(a, b):
i = a
j = b
n = 0
while i <= j: #這里之所以寫i是因為a只是形參不是變量
n += i
i += 1
print(n)
res(5, 15)
5.第一題的函數封裝
import random
第一步輸入信息
def get_input_data():
while True:
r_nums = input('請輸入辦公室的個數:')
t_nums = input('請輸入老師的個數:')
對輸入的數字進行判斷,注意類型要一致
if int(r_nums) <= int(t_nums):
return int(r_nums), int(t_nums)
print('教室數低于老師數,請重新輸入')
---------------------------------------------------------------------------------
分配辦公室
def range_room(rooms_num, teachers_num): # 接收傳進來的的實參(辦公室/老師)
# 創建辦公室列表,就是嵌套[]個數
rooms = []
while rooms_num >= 1:
rooms.append([])
rooms_num -= 1
遍歷出老師的個數
teachers = []
while teachers_num >= 1:
teachers_num -= 1
teachers.append('teacher%d'%(teachers_num + 1))
---------------------------------------------------------------------------------
# 開始安排辦公室
#1.先隨機選出N位老師,依次放到辦公室中
for room in rooms:
index = random.randint(0,len(teachers) - 1) # 編列老師的索引值,索引值的隨機數量是根據列表rooms的個數,而不是teachers
teac = teachers.pop(index) # 刪掉的索引個數 = room房間數
room.append(teac) # 這一步就是根據刪除的索引個數 = room房間數條件讓每個房間都有一個人
2.將剩下的老師,再隨機分配
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("分配結束后:", rooms)
- 需求:從鍵盤中輸入5個學生的名字,存儲到列表中,然后打印出每個學生名字中的第2個字母
def make_stu_list():
i = 1
student_list = []
while i <= 5:
student = input('請輸入第%d名學生的姓名:' % i)
student_list.append(student)
i += 1
return student_list
def print_mess():
student_list = make_stu_list() # 在函數1中是為了存儲5個學生的信息弄過來
for stu in student_list:
print('%s的第二個字母為%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 }數據已經在里面了")
9.求1-100間的偶數和
第一種:
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]
理解:?[表達式 for 變量(遍歷得到的值) in 列表] 或者 [表達式 for 變量(遍歷得到的值) in 列表 if 條件]
print(a)
a 的結果 ['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可以,如果兩者類型不一樣的話就要轉成一樣的類型