1. 程式人生 > >列表圖形列印--------字串處理經典習題

列表圖形列印--------字串處理經典習題

導文

思想,在平時非業務面試或者列印相關圖形時,通常採用列表的形式進行列印,如下就是非常經典的兩練習習題,重要的是思想,思維和方式,具體總結如下:

列印圖形

這裡寫圖片描述
重點分析

  • 每個行和列要對齊,至於多少寬度要根據自動生成時,計算偏移寬度;
  • 其實每一行就是一個列表,列表採用” “.join(iterable)字串處理將列表轉換成字串序列,可見” “.join()字串處理函式的重要性
  • 最核心的就是計算最後一行的長度,即可知道其他行的偏移量的長度。
  • 最後一行才能確定長度

程式碼 實現

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m): count = " ".join([str(x) for x in range(m,0,-1)]) length = len(count) #計算最後一行長度 for i in range(1,m): cout = " ".join([str(x) for x in range(i,0,-1)]) print('{:>{}}'.format(cout,length)) print(count) print(tri(12))

為方便測試,將空格替換為#可知:
這裡寫圖片描述
程式碼實現

#!/bin/python3
#-*- coding: UTF-8 -*- #created time 2018-04-12 def tri(m): count = "#".join([str(x) for x in range(m,0,-1)]) length = len(count) for i in range(1,m): cout = "#".join([str(x) for x in range(i,0,-1)]) print('{:>{}}'.format(cout,length)) print(count) print(tri(12))

到序列印

這裡寫圖片描述
重點分析

  • 字串處理將列表轉換為字串,整個第一行就形成str容器
  • 依次遞減,採用字串切片,切片條件是什麼?當str[i]等於空格或者其他字元時進行切片
  • 整個列表偏移寬度可通過第一行即可知道序列寬度

程式碼實現
先採用#號連線更加方便追蹤

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
    count = "#".join([str(x) for x in range(m,0,-1)])
    length = len(count)
    print(count)
    for i in range(length):
        if count[i] == "#":
            cout = count[i:]
            print('{:>{}}'.format(cout,length))
print(tri(12))

列印結果
這裡寫圖片描述

替換#號程式碼實現

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
    count = " ".join([str(x) for x in range(m,0,-1)])
    length = len(count)
    print(count)
    for i in range(length):
        if count[i] == " ":
            cout = count[i:]
            print('{:>{}}'.format(cout,length))
print(tri(12))

執行結果
這裡寫圖片描述

總結

類似解法

  • 通過字串處理+列表生成式,將列表轉換為字串
  • 通過字串的長度確定偏移量
  • 遞減採用列表或序列切片的方式進行解決

相關推薦

列表圖形列印--------字串處理經典習題

導文 思想,在平時非業務面試或者列印相關圖形時,通常採用列表的形式進行列印,如下就是非常經典的兩練習習題,重要的是思想,思維和方式,具體總結如下: 列印圖形 重點分析 每個行和列要對齊,至於多少寬度要根據自動生成時,計算偏移寬度; 其實每一行就

LintCode 384: Longest Substring Without Repeating Characters (字串處理經典題)

Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. E

hdu2074疊筐解題報告---圖形列印字串模擬)

                                          &

ACM經典演算法之字串處理

一、(字串替換) 語法:replace(char str[],char key[],char swap[]); 引數: str[]: 在此源字串進行替換操作 key[]: 被替換的字串,不能為空串 swap[]: 替

關於字串處理經典問題

串的處理 在實際的開發工作中,對字串的處理是最常見的程式設計任務。 本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: 1. 把每個單詞的首字母變為大寫。 2. 把數字與字母之間用下劃線字元(_)分開,使得更清晰 3. 把單詞中間有多個空格的調整為1個空格。 例如:

oj1967: C/C++經典程式訓練5---圖形列印問題

問題描述:圖形的規則如下 ,要求輸入n的值,按照圖形的列印規則打印出相關的圖形        +                            +*+                +    

C/C++經典程式訓練5---圖形列印問題

+ +*+ +***+ +*****+ +***+ +*+ +#include <stdio.h> int main() {     int n,i,j,k;     scanf("%d",&n);     for(i=1;i<=n;i++)     {  

移動端APP列表點透事件處理方法

lun 彈窗 效果 tee 兩張 mark turn 方案 nod 關於點透事件這裏不再贅述,如果不清楚的可以上網搜一搜,或者看小火柴的這篇文章。 這裏是自己在做移動端時,在列表滑動的時候,遇到的點透問題。出現這個問題的來由是因為在轉場的時候,各個手機的轉場效果不一樣,有的

Python中的異常處理習題

and 功能 lambda exce raw log att 偶數 port 1 定義一個函數func(filepath) filepath:為文件名,用with實現打開文件,並且輸出文件內容。 1 # -*- coding: UTF-8 -*- 2 3 4 de

MySQL基本語句與經典習題

添加 where子句 round tac outer num div 通配符 tinc 【SQL語句大全】 本文用到的數據(5張表): customers: orders: orderitems: Products: Vendors: 一、檢索數據-select

內置數據結構列表字符串及相關習題

輸入 ces 大小寫 技術 相關 src 拼接 不可變 雙引號 列表一個隊列,一個排列整齊的隊伍列表內的個體稱作元素,由若幹元素組成列表元素可以是任意對象(數字、字符串、對象、列表等)列表內元素有順序,可以使用索引線性的數據結構使用 [ ] 表示列表是可變的列表與鏈表的列表

2. C語言文件操作經典習題

main pri 多少 linux 文件操作 spa 加密文件 include 加密 1. 統計英文文本文件中,有多少個大寫字母、小寫字母、數字、空格、換行以及其他字符。 #define _CRT_SECURE_NO_WARNINGS #include <stdio

字串處理演算法(六)求2個字串最長公共部分

基礎演算法連結快速通道,不斷更新中: 整型陣列處理演算法部分: 整型陣列處理演算法(一)按照正態分佈來排列整型陣列元素 整型陣列處理演算法(二)檔案中有一組整數,要求排序後輸出到另一個檔案中 整型陣列處理演算法(三)把一個數組裡的所有元素,插入到另一個數組的指定位置 整型陣列

mysql進行字串處理

mysql進行字串的處理 MySQL 字串擷取函式:left(), right(), substring(), substring_index()。還有 mid(), substr()。其中,mid(), substr() 等價於 substring() 函式,substring()

C++筆試題 字串處理

字串處理 描述 定義字串的以下幾種操作: • reverse(A)獲得A字串的逆序字串,例如reverse(“abc”) = “cba” • shuffle(A)獲得A隨機重排的字串,例如shuffle(“dog”) ∈ {“dog”, “dgo”, “odg”, “ogd”,

字串處理-Hdu1004

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1004 題目大意:給你一個數n,要求輸入n個字串,在這n個字串中,我們需要輸出出現次數最多的字串。 這道題看起來的確很簡單,但是卻花了我不少時間,開始時是利用C語言中的char陣列來存這些字串,依次統計,但是做

【C語言】字串處理自定義函式

1、字串求長度 #include <stdio.h> int Mystrlen1(const char *str) { int i=0; while(*(str++)!='\0') { i++; } return i; } int Mystrlen2(cons

E - String of CCPC (字串處理)(str.substr()的運用)

滴答滴答---題目連結  BaoBao has just found a string  of length  consisting of 'C' and 'P' in his pocket. As a big fan of the China

04: 字串處理 擴充套件的指令碼技巧 正則表示式

Top NSD SHELL DAY04 案例1:字串擷取及切割 案例2:字串初值的處理 案例3:expect預期互動 案例4:使用正則表示式 1 案例1:字串擷取及切割 1.1 問題 使用Shell完成各種Linux運維任務時,一旦涉及到判斷、條

字元和字串處理(2)

2.5 安全字串函式 不安全的字串函式 Strsafe函式 Safe CRT函式 (C執行庫) strcpy, wcscpy, _tcscpy, _mbscpy, strcpy , lstrcpy, _tccpy