本文目錄一覽:
- 1、Python大神教你300行代碼搞定HTML模板渲染「附源碼」
- 2、求一段python代碼,其功能是刪除記事本的前20行。
- 3、如何快速學習Python?
- 4、寫一個20行以上的python簡單代碼
- 5、可以幫我這段20行的簡單python代碼debug一下嗎?
- 6、求Python大神給個200行左右的代碼,多點注釋,做期末大作業
Python大神教你300行代碼搞定HTML模板渲染「附源碼」
模板語言由HTML代碼和邏輯控制代碼組成,此處 @PHP 。通過模板語言可以快速的生成預想的HTML頁面。應該算是後端渲染不可缺少的組成部分。
通過使用學習 tornado 、 bottle 的模板語言,我也效仿著實現可以獨立使用的模板渲染的代碼模塊,模板語法來自 tornado 和 bottle 的語法。可以用來做一些簡單的事情 網頁渲染 , 郵件內容生成 等HTML顯示方面。以下就是簡單的語法使用介紹。
1. 變數。使用 {{ }} 包裹起來,裡面的變數為Python傳入。模板渲染時會將傳入的變數轉換成字元串並填入對應位置。
2. 轉義。默認傳入的數據都會進行HTML轉義,可以使用 {% raw value %} 來將value的內容按原始字元串輸出。
3. 條件控制。支持Python的 if,elif,else 。條件代碼需要放在 {% %} 內部,並且在條件結束後需要額外增加 {% end %} ,用於標識條件控制語句塊範圍。
4. 循環控制。支持Python的 for 和 while 。與條件控制一樣也需要放在 {% %} 內部,並且結束處需要額外增加 {% end %} ,用於標識循環控制語句塊的範圍。
這個模板語言模塊是在 Python2.7 上面開發使用的,如果要在 Python3+ 上使用需要對 str 和 bytes 進行一些處理即可,由於沒有引用任何其他模塊,可以很好地獨立使用。
原文鏈接:
求一段python代碼,其功能是刪除記事本的前20行。
可以這樣,用readlines()讀取所有數據,del lists[20:] 刪除前20行數據
在進行覆蓋寫入
如果不做其他操作,可以用二進位讀取寫入,速度會更快一些
如何快速學習Python?
Python是一門語法簡潔、功能強大、上手簡單的計算機編程語言,根據TIOBE最新排名,Python已超越C#,與Java,C,C++成為全球4大流行語言之一。
Python編程語言其應用廣泛,在人工智慧、雲計算開發、大數據開發、數據分析、科學運算、網站開發、爬蟲、自動化運維、自動化測試以及遊戲領域均有應用。
在各大企業,如國內的阿里、騰訊、網易、新浪、豆瓣,國外的谷歌、NASA、YouTube、Facebook,Python的企業對Python開發人才均有巨大的需求,隨著人工智慧、大數據的發展和廣泛的應用,Python人才的需求量也勢必增加,而且在未來的發展前景也是不可限量的!
相比於Java、php等語言,目前,Python編程人才缺口較大,市場供不應求,就業薪資也普遍較高,因此,現在學習Python是絕佳機會。那麼,如何快速學習Python?
1.要有決心
做任何事情,首先要有足夠的決心和堅持,才能做好事情、學好Python也是如此。
2.勤於動手
對於編程語言的學習,不能眼高手低,學的過程中,想到就要寫出來,一方面能夠培養出寫代碼的感覺,另一方面可以加深知識的掌控。
3.一套完整的學習體系
Python編程語言的全面學習,需要擁有一整套系統的學習資料和學習計劃,全面掌握Python基礎知識,對以後解決Python編程過程中的問題十分有益!
4.項目實戰訓練
Python編程基礎知識的學習最終目的是應用於項目中,因此,項目實戰訓練必不可少,多做幾個項目,盡量是功能完整的項目,形成項目思路,對以後進行項目實戰是很有好處的!
寫一個20行以上的python簡單代碼
class Price:
ticket_d = 100
ticket_w = ticket_d*1.2
def rq(self):
self.a = int(input(‘請輸入是平日還是周末(平日:1/周末:0):’))
if self.a == 0:
self.p = self.ticket_w
if self.a == 1:
self.p = self.ticket_d
def pj(self):
input(‘請輸入是人數’ + ‘\n’)
self.ad = int(input(‘大人數量:’))
self.ch = int(input(‘兒童數量:’))
self.money = self.p *self.ad + self.p *self.ch/2
print(‘%f’ % self.money)
class Ticket():
def __init__(self, weekend=False, child=False):
self.exp = 100
if weekend:
self.inc = 1.2
else:
self.inc = 1
if child:
self.discount = 0.5
else:
self.discount = 1
def calcPrice(self, num):
return self.exp * self.inc * self.discount * num
adult = Ticket()
child = Ticket(child=True)
print(“2個成人 + 1個小孩平日票價為:%.2f” % (adult.calcPrice(2) + child.calcPrice(1)))
可以幫我這段20行的簡單python代碼debug一下嗎?
import csv
def bmi(*list):
info = list[0]
height = float(info[0])
weight = float(info[1])
bmi = weight/(height*height)
return str(bmi)
row1=[]
row2=[]
row3=[]
a = open(‘data.csv’, ‘r’, encoding=’utf-8′)
reader = csv.DictReader(a)
for r in reader:
row1.append(r[‘我’])
row2.append(r[‘妹妹’])
row3.append(r[‘哥哥’])
a.close()
row = [‘bmi’, bmi(row1), bmi(row2), bmi(row3)]
out = open(“data.csv”, “a”, newline=””)
csv_writer = csv.writer(out, dialect=”excel”)
csv_writer.writerow(row)
out.close()
求Python大神給個200行左右的代碼,多點注釋,做期末大作業
#-*- coding:utf-8 -*-
import curses #引入curses模塊,curses是一個在Linux/Unix下廣泛應用的圖形函數庫.,作用是可以繪製在DOS下的用戶界面和漂亮的圖形。
from random import randrange, choice # 從random模塊引入randrange,choice這兩個類
from collections import defaultdict #從collections引入defaultdict這個類
letter_codes = [ord(ch) for ch in ‘WASDRQwasdrq’] #ord函數是把字元轉換成對應的數字
actions = [‘Up’, ‘Left’, ‘Down’, ‘Right’, ‘Restart’, ‘Exit’] #上,左,下,右,重啟,退出
actions_dict = dict(zip(letter_codes, actions * 2)) #把字母與動作對應起來。 zip是把元組中的值對應起來。
#############################
W Up
A Left
S Down
D Right
R Restart
Q Exit
w Up
a Left
s Down
d Right
r Restart
Q Exit
##############################################
def get_user_action(keyboard):
char = “N” #char的初始值為N while char not in actions_dict:
char = keyboard.getch() return actions_dict[char] #阻塞+循環,直到獲得用戶有效輸入才返回對應行為def transpose(field): return [list(row) for row in zip(*field)] #zip函數裡邊加*號,是把行變列,列變行。所以這句代碼是行列轉置def invert(field): return [row[::-1] for row in field] #這句代碼是把列表前後顛倒class GameField(object): #創建一個叫做GameField的類,用來創建棋盤 def __init__(self, height=4, width=4, win=2048): 這個類三個參數 self.height = height #高 self.width = width #寬 self.win_value = win#過關分數 self.score = 0#當前分數 self.highscore = 0#最高分 self.reset()#重置棋盤 def reset(self):#定義一個reset函數 if self.score self.highscore:#如果當前分數大於最高分,那麼把當前分數賦值給最高分 self.highscore = self.score self.score = 0#當前分數恢復到0分 self.field = [[0 for i in range(self.width)] for j in range(self.height)]#橫縱坐標恢復到(0,0) self.spawn()#調用spawn這個函數 self.spawn() def move(self, direction):#定義move函數 def move_row_left(row):#向左移 def tighten(row): # squeese non-zero elements together 把零散的非零單元擠到一塊
new_row = [i for i in row if i != 0] #如果i不等於零,把他們賦值到new_row這個元組中
new_row += [0 for i in range(len(row) – len(new_row))]#其餘位置用0補充 return new_row#返回這個元組 def merge(row):#定義merge函數,用來合併單元
pair = False#pair初始值為假
new_row = []#new_row初始值為空 for i in range(len(row)):#讓i在格子里循環 if pair:如果pair為真
new_row.append(2 * row[i])#那麼把把row【i】的值乘以2,追加到new_row後邊 self.score += 2 * row[i]#並且得分為row【i】的值乘以2
pair = False#pair重新賦值為假 else:如果pair為真 if i + 1 len(row) and row[i] == row[i + 1]:#如果i+1還沒到邊界,並且此時的row【i】=row【i+1】
pair = True #那麼pair為真
new_row.append(0)#new_row後追加零 else:
new_row.append(row[i])#否則追加row【i】
assert len(new_row) == len(row) #提醒兩者長度一致 return new_row return tighten(merge(tighten(row))) #反覆合併,知道不能合併為止
moves = {}
moves[‘Left’] = lambda field: \
[move_row_left(row) for row in field]#做移動
moves[‘Right’] = lambda field: \
invert(moves[‘Left’](invert(field)))#invert是逆轉
moves[‘Up’] = lambda field: \
transpose(moves[‘Left’](transpose(field)))#transpose是轉置
moves[‘Down’] = lambda field: \
transpose(moves[‘Right’](transpose(field))) if direction in moves: if self.move_is_possible(direction):#如果移動方向在四個方向上, self.field = moves[direction](self.field)那麼調用moves函數 self.spawn()#產生隨機數 return True else: return False def is_win(self): return any(any(i = self.win_value for i in row) for row in self.field) def is_gameover(self): return not any(self.move_is_possible(move) for move in actions) def draw(self, screen):
help_string1 = ‘(W)Up (S)Down (A)Left (D)Right’
help_string2 = ‘ (R)Restart (Q)Exit’
gameover_string = ‘ GAME OVER’
win_string = ‘ YOU WIN!’ def cast(string):
screen.addstr(string + ‘\n’) def draw_hor_separator():
line = ‘+’ + (‘+——‘ * self.width + ‘+’)[1:]
separator = defaultdict(lambda: line) if not hasattr(draw_hor_separator, “counter”):
draw_hor_separator.counter = 0
cast(separator[draw_hor_separator.counter])
draw_hor_separator.counter += 1 def draw_row(row):
cast(”.join(‘|{: ^5} ‘.format(num) if num 0 else ‘| ‘ for num in row) + ‘|’)
screen.clear()
cast(‘SCORE: ‘ + str(self.score)) if 0 != self.highscore:
cast(‘HGHSCORE: ‘ + str(self.highscore)) for row in self.field:
draw_hor_separator()
draw_row(row)
draw_hor_separator() if self.is_win():
cast(win_string) else: if self.is_gameover():
cast(gameover_string) else:
cast(help_string1)
cast(help_string2) def spawn(self):
new_element = 4 if randrange(100) 89 else 2
(i,j) = choice([(i,j) for i in range(self.width) for j in range(self.height) if self.field[i][j] == 0]) self.field[i][j] = new_element def move_is_possible(self, direction): def row_is_left_movable(row):
def change(i): # true if there’ll be change in i-th tile if row[i] == 0 and row[i + 1] != 0: # Move return True if row[i] != 0 and row[i + 1] == row[i]: # Merge return True return False return any(change(i) for i in range(len(row) – 1))
check = {}
check[‘Left’] = lambda field: \
any(row_is_left_movable(row) for row in field)
check[‘Right’] = lambda field: \
check[‘Left’](invert(field))
check[‘Up’] = lambda field: \
check[‘Left’](transpose(field))
check[‘Down’] = lambda field: \
check[‘Right’](transpose(field)) if direction in check: return check[direction](self.field) else: return Falsedef main(stdscr): def init(): #重置遊戲棋盤
game_field.reset() return ‘Game’ def not_game(state): #畫出 GameOver 或者 Win 的界面
game_field.draw(stdscr) #讀取用戶輸入得到action,判斷是重啟遊戲還是結束遊戲
action = get_user_action(stdscr)
responses = defaultdict(lambda: state) #默認是當前狀態,沒有行為就會一直在當前界面循環
responses[‘Restart’], responses[‘Exit’] = ‘Init’, ‘Exit’ #對應不同的行為轉換到不同的狀態 return responses[action] def game(): #畫出當前棋盤狀態
game_field.draw(stdscr) #讀取用戶輸入得到action
action = get_user_action(stdscr) if action == ‘Restart’: return ‘Init’ if action == ‘Exit’: return ‘Exit’ if game_field.move(action): # move successful if game_field.is_win(): return ‘Win’ if game_field.is_gameover(): return ‘Gameover’ return ‘Game’
state_actions = { ‘Init’: init, ‘Win’: lambda: not_game(‘Win’), ‘Gameover’: lambda: not_game(‘Gameover’), ‘Game’: game
}
curses.use_default_colors()
game_field = GameField(win=32)
state = ‘Init’ #狀態機開始循環 while state != ‘Exit’:
state = state_actions[state]()
curses.wrapper(main)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151554.html