三元運算又叫三目運算。(是爲了賦值的)編程
v = 前面 if 條件 else 後面 #條件爲真,v取if前面的值;條件爲假,v取if後面的值 # 三元運算是if條件判斷的簡化版 if 條件: v = '前面' else: v = '後面'
練習題app
# 讓用戶輸入值,若是值是整數,則轉換成整數,不然賦值爲None data = input('>>>') value = int(data) if data.isdecimal() else None
注意:現階段咱們要先用複雜的 if 寫出來,再去考慮是否能用簡化的。函數式編程
先作出來,再思考如何簡化。函數
截至目前咱們所接觸、所寫的編成爲:面向過程式編程【可讀性差/可重用性差】ui
# 面向過程編程 user_input = input('請輸入角色:') if user_input == '管理員': import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('管理員,我想演男一號,你想怎麼着都行。', 'plain', 'utf-8') msg['From'] = formataddr(["李邵奇", '15776556369@163.com']) msg['To'] = formataddr(["管理員", '344522251@qq.com']) msg['Subject'] = "情愛的導演" server = smtplib.SMTP("smtp.163.com", 25) server.login("15776556369@163.com", "qq1105400511") server.sendmail('15776556369@163.com', ['管理員', ], msg.as_string()) server.quit() elif user_input == '業務員': import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('業務員,我想演男一號,你想怎麼着都行。', 'plain', 'utf-8') msg['From'] = formataddr(["李邵奇", '15776556369@163.com']) msg['To'] = formataddr(["業務員", '業務員']) msg['Subject'] = "情愛的導演" server = smtplib.SMTP("smtp.163.com", 25) server.login("15776556369@163.com", "qq1105400511") server.sendmail('15776556369@163.com', ['業務員', ], msg.as_string()) server.quit() elif user_input == '老闆': import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('老闆,我想演男一號,你想怎麼着都行。', 'plain', 'utf-8') msg['From'] = formataddr(["李邵奇", '15776556369@163.com']) msg['To'] = formataddr(["老闆", '老闆郵箱']) msg['Subject'] = "情愛的導演" server = smtplib.SMTP("smtp.163.com", 25) server.login("15776556369@163.com", "qq1105400511") server.sendmail('15776556369@163.com', ['老闆郵箱', ], msg.as_string()) server.quit()
# 函數式編程 def send_email(): import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('老闆,我想演男一號,你想怎麼着都行。', 'plain', 'utf-8') msg['From'] = formataddr(["李邵奇", '15776556369@163.com']) msg['To'] = formataddr(["老闆", '老闆郵箱']) msg['Subject'] = "情愛的導演" server = smtplib.SMTP("smtp.163.com", 25) server.login("15776556369@163.com", "qq1105400511") server.sendmail('15776556369@163.com', ['老闆郵箱', ], msg.as_string()) server.quit() user_input = input('請輸入角色:') if user_input == '管理員': send_email() elif user_input == '業務員': send_email() elif user_input == '老闆': send_email()
對於函數編程:code
# 函數的定義 def 函數名(): # 函數名的命名規範與變量的同樣 # 函數內容 (縮進) pass # 函數的執行 函數名()
def get_list_first_data(): v = [11,22,33,44] print(v[0]) get_list_first_data() # 注意:函數若是不被調用,則內部代碼永遠不會被執行。
# 假如:管理員/業務員/老闆用的是同一個郵箱。 def send_email(): print('發送郵件成功,假設有10含代碼') user_input = input('請輸入角色:') if user_input == '管理員': send_email() elif user_input == '業務員': send_email() elif user_input == '老闆': send_email()
def get_list_first_data(aaa): # aaa叫形式參數(形參) v = [11,22,33,44] print(v[aaa]) get_list_first_data(1) # 2/2/1調用函數時傳遞叫:實際參數(實參) get_list_first_data(2) get_list_first_data(3) get_list_first_data(0)
# 假如:管理員/業務員/老闆用的是同一個郵箱。 """ def send_email(to): import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('導演,我想演男一號,你想怎麼着都行。', 'plain', 'utf-8') msg['From'] = formataddr(["李邵奇", '15776556369@163.com']) msg['To'] = formataddr(["導演", to]) msg['Subject'] = "情愛的導演" server = smtplib.SMTP("smtp.163.com", 25) server.login("15776556369@163.com", "qq1105400511") server.sendmail('15776556369@163.com', [to, ], msg.as_string()) server.quit() """ def send_email(to): template = "要給%s發送郵件" %(to,) print(template) user_input = input('請輸入角色:') if user_input == '管理員': send_email('xxxx@qq.com') elif user_input == '業務員': send_email('xxxxo@qq.com') elif user_input == '老闆': send_email('xoxox@qq.com')
練習題orm
# 1. 請寫一個函數,函數計算列表 info = [11,22,33,44,55] 中全部元素的和。 def get_sum(): info = [11,22,33,44,55] data = 0 for item in info: data += item print(data) get_sum() # 2. 請寫一個函數,函數計算列表中全部元素的和。 def get_list_sum(a1): data = 0 for item in a1: data += item print(data) get_list_sum([11,22,33]) get_list_sum([99,77,66]) v1 = [8712,123,123] get_list_sum(v1) # 3. 請寫一個函數,函數將兩個列表拼接起來。 def join_list(a1,a2): result = [] result.extend(a1) result.extend(a2) print(result) join_list([11,22,33],[55,66,77] # 4. 計算一個列表的長度 def my_len(arg): count = 0 for item in arg: count += 1 print(count) v = [11,22,33] my_len(v) len(v) # 5. 發郵件的示例 def send_email(role,to): template = "要給%s%s發送郵件" %(role,to,) print(template) user_input = input('請輸入角色:') if user_input == '管理員': send_email('管理員','xxxx@qq.com') elif user_input == '業務員': send_email('業務員','xxxxo@qq.com') elif user_input == '老闆': send_email('老闆','xoxox@qq.com')
def func(arg): # .... return 9 # 返回值爲9 默認:return None val = func('adsfadsf')
# 1. 讓用戶輸入一段字符串,計算字符串中有多少A字符的個數。有多少個就在文件a.txt中寫多少個「李邵奇」。 def get_char_count(data): sum_counter = 0 for i in data: if i == 'A': sum_counter += 1 return sum_counter def write_file(line): if len(line) == 0: return False # 函數執行過程當中,一旦遇到return,則中止函數的執行。 with open('a.txt',mode='w',encoding='utf-8') as f: f.write(line) return True content = input('請輸入:') counter = get_char_count(content) write_data = "李邵奇" * counter status = write_file(write_data) if status: print('寫入成功') else: print('寫入失敗')
# 狀況1 def f1(): pass f1() # 狀況2 def f2(a1): pass f2(123) # 狀況3 def f3(): return 1 v1 = f3() # 狀況4 def f4(a1,a2): # ... return 999 v2 = f4(1,7)
# 1. 寫函數,計算一個列表中有多少個數字,打印: 列表中有%s個數字。 # 提示:type('x') == int 判斷是不是數字。 """ # 方式一: def get_list_counter1(data_list): count = 0 for item in data_list: if type(item) == int: count += 1 msg = "列表中有%s個數字" %(count,) print(msg) get_list_counter1([1,22,3,'alex',8]) # 方式二: def get_list_counter2(data_list): count = 0 for item in data_list: if type(item) == int: count += 1 return count v = get_list_counter1([1,22,3,'alex',8]) msg = "列表中有%s個數字" %(v,) print(msg) """
# 2. 寫函數,計算一個列表中偶數索引位置的數據構形成另一個列表,並返回。 """ # 方式一: def get_data_list1(arg): v = arg[::2] return v data = get_data_list1([11,22,33,44,55,66]) # 方式二: def get_data_list2(arg): v = [] for i in range(0,len(arg)): if i % 2 == 0: v.append(arg[i]) return v data = get_data_list2([11,22,33,44,55,66]) """
# 3. 讀取文件,將文件的內容構形成指定格式的數據,並返回。 """ a.log文件 alex|123|18 eric|uiuf|19 ... 目標結構: a. ["alex|123|18","eric|uiuf|19"] 並返回。 b. [['alex','123','18'],['eric','uiuf','19']] c. [ {'name':'alex','pwd':'123','age':'18'}, {'name':'eric','pwd':'uiuf','age':'19'}, ] """ with open('a.log.txt',mode = 'r',encoding = 'utf-8') as f: data = f.read() print(data) def get_file(a): date1 = [] for i in a.split('\n'): date1.append(i) return date1 v1 = get_file(data) print(v1) def get_file1(b): date2 = [] d = [] for i1 in b.split('\n'): i1 = i1.split('|') d.append(i1) date2 += d return date2 v2 = get_file1(data) print(v2) def get_file2(c): date3 = [] e = {} for i2 in c.split('\n'): i2 = i2.split('|') e['name'] = i2[0] e['pwd'] = i2[1] e['age'] = i2[2] date3.append(e) return date3 v3 = get_file2(data) print(v3)