作者Schottky (順風相送)
看板Python
標題Re: [心得] 九九乘法表 不使用迴圈
時間Sat Feb 27 13:15:02 2021
朋友給了我一個很 Python 的解法,要用 Python 3.8 以上才能執行
from itertools import product, zip_longest
from math import prod
def show99(f):
if f[0][1]==9: return f"{f[0][1]:1d} x {f[0][0]:1d} = {f[1]:2d}\n"
else: return f"{f[0][1]:1d} x {f[0][0]:1d} = {f[1]:2d}, "
e = list(product(range(1,10), repeat=2))
l = list(map(prod, e))
f = zip_longest(e,l)
print(''.join(map(show99,f)))
--
桃樂絲: 可是, 如果你沒有頭腦, 為什麼會說話?
稻草人: ㄝ, 我也不知... 但是有些人沒有頭腦也能說超~多話呢。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.64.143 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1614402905.A.58B.html
1F:推 ddavid: 用itertools.product算不算作弊用了迴圈? 03/01 08:53
2F:推 ddavid: 另外有個思路是把首篇方法一那整個九九乘法表的字串編碼壓 03/01 08:56
3F:→ ddavid: 縮(比如用zip),於是要印時call解壓縮程式解開來再把解 03/01 08:58
4F:→ ddavid: 開的內容印出來就好,跟request法異曲同工,但不用網路XD 03/01 08:58
有道是作弊沒被抓到就不算作弊 (出自 JOJO 第三部)
雖說這題目原本是考試題目,但我想出題的人根本沒想到有這麼多解法
我也不知道真的在考卷上這樣寫會出什麼事,反正我們自己玩得開心就好
iterator 系的解法有在別板看過 (用 C++ 寫的)
不管算不算作弊,畢竟是除了 for/while loop 以外的寫法,也頗有參考價值
不過我書還沒唸到那邊 (小聲)
zip 法第一次聽說,大開眼界 XD
原來還能這樣操作,感覺開啟了一個全新的領域
(對,這原本是 C_and_CPP 板的搞笑系列文)
※ 編輯: Schottky (111.250.54.51 臺灣), 03/01/2021 17:07:58
5F:推 ddavid: C/C++版的搞笑串我只參加過一個2009年的串XD 03/02 16:45
6F:→ ddavid: [問題] c語言程式求助 這一串 03/02 16:45
7F:→ ddavid: 雖然是作業文,可是熱心版眾踴躍回答問題,超級溫馨(?) 03/02 16:46
8F:→ ddavid: 其實啊,如果用itertools算過關,那我在本版 #1V0jhKqA 03/02 16:48
9F:→ ddavid: 用的那招應該也能過關XD 03/02 16:48
10F:→ ddavid: 啊,好像不行,裡面有for in太明顯了XD 03/02 16:57