python函数编程训练题_Python文件与函数练习题
有名為poetry.txt的文件,其內容如下,請刪除第三行:
"""
昔人已乘黃鶴去,此地空余黃鶴樓。
黃鶴一去不復返,白云千載空悠悠。
晴川歷歷漢陽樹,芳草萋萋鸚鵡洲。
日暮鄉關何處是?煙波江上使人愁。
"""
import os
str = '晴川歷歷漢陽樹,芳草萋萋鸚鵡洲'
f_name = 'poetry.txt'
f_new_name = '%s.new'% f_name
f_new = open(f_new_name,'w',encoding='utf-8')
with open(f_name,'r', encoding='utf-8') as f:
for line in f:
if str in line:
line = ''
f_new.write(line)
else:
f_new.write(line)
f_new.close()
os.replace(f_new_name, f_name)
有名為username.txt的文件,其內容格式如下,寫一個程序,判斷該文件中是否存在"alex", 如果沒有,則將字符串"alex"添加到該文件末尾,否則提示用戶該用戶已存在
import os
str = 'alex'
f_name = 'username.txt'
f_new_name = '%s.new'% f_name
with open(f_name,'r+', encoding='utf-8') as f:
for line in f:
if str in line:
print('the user {} already exist'.format(str))
break
else:
f.write('\n%s' % str)
有名為user_info.txt的文件,其內容格式如下,寫一個程序,刪除id為100003的行;
"""
有名為user_info.txt的文件,其內容格式如下,寫一個程序,刪除id為100003的行
pizza,100001
alex, 100002
egon, 100003
"""
f_name = r'user_info.txt'
f_new_name = '%s.new'%f_name
del_id = '100001'
f_new = open(f_new_name, 'w', encoding='utf-8')
with open(f_name, 'r', encoding='utf-8') as f:
for line in f:
if del_id in line:
pass
else:
f_new.write(line)
f_new.close()
os.replace(f_new_name,f_name)
有名為user_info.txt的文件,其內容格式如下,寫一個程序,將id為100002的用戶名修改為alex li;
"""
有名為user_info.txt的文件,其內容格式如下,寫一個程序,將id為100002的用戶名修改為alex li
pizza,100001
alex,100002
egon,100003
"""
f_name = r'user_info.txt'
f_new_name = '%s.new'%f_name
update_id = '100002'
update_name = 'alex li'
f_new = open(f_new_name, 'w', encoding='utf-8')
with open(f_name, 'r', encoding='utf-8') as f:
for line in f:
if update_id in line:
line = ','.join([update_name, update_id])
f_new.write(line+'\n')
else:
f_new.write(line)
f_new.close()
os.replace(f_new_name,f_name)
寫一個計算每個程序執行時間的裝飾器;
import time
from functools import wraps
def timer(func):
@wraps(func)
def wrapper(*args,**kwargs):
start = time.time()
ret = func(*args, **kwargs)
print('{} execute {}s'.format(func.__name__,time.time()-start))
return ret
return wrapper
@timer # fib = timer(fib)
def fib(n):
a, b = 0, 1
for i in range(n):
print(b)
a, b = b, a+b
return b
fib(100)
lambda是什么?請說說你曾在什么場景下使用lambda?
好處:
1.lambda函數比較輕便,即用即扔,適合完成只在一處使用的簡單功能
2.匿名函數,一般用來給filter,map這樣的函數式編程服務
3.作為回調函數,傳遞給某些應用,比如消息處理
題目:寫一個搖骰子游戲,要求用戶壓大小,賠率一賠一。
要求:三個骰子,搖大小,每次打印搖骰子數。
import random
def roll_dice(numbers=3, points=None):
"""
定義骰子,循環三次
:param numbers:
:param points:
:return:
"""
if points is None:
points = []
print('----- 搖骰子 -----')
while numbers > 0:
point = random.randrange(1, 7)
# print('roll dice is {}'.format(point))
points.append(point)
numbers -= 1
return points
def roll_result(total):
"""
定義大小,三個大或者一個小兩個大。三個小或者兩個小一個大
:param total:
:return:
"""
is_big = 11 <= total <= 18
is_small = 3 <= total <= 10
if is_big:
return "big"
elif is_small:
return "small"
def start_game():
money = 1000
while money > 0:
print('----- 游戲開始 -----')
choices = ['big', 'small']
your_choice = input("請下注, big or small")
your_bet = input("下注金額:")
if your_choice in choices:
if your_bet.isdigit():
points = roll_dice()
total = sum(points)
you_win = your_choice == roll_result(total)
if you_win:
print("骰子點數", points, total)
money += int(your_bet)
print("恭喜, 你贏了%s元, 你現在的本金%s 元" % (your_bet, money))
else:
print("骰子點數", points, total)
money -= int(your_bet)
print("很遺憾, 你輸了%s元, 你現在的本金%s 元" % (your_bet, money))
else:
print('格式有誤,請重新輸入')
else:
print('格式有誤,請重新輸入')
else:
print("game over")
start_game()
總結
以上是生活随笔為你收集整理的python函数编程训练题_Python文件与函数练习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 2008 S
- 下一篇: 编程新手选择开发语言的注意事项