笨辦法學Python - 習題5: More Variables and Printing

来源:https://www.cnblogs.com/csyxf/archive/2019/01/16/10274989.html
-Advertisement-
Play Games

1、習題 4: 更多的變數和列印 學習目標: 瞭解用戶輸入方法,明白pthon2和Python3之間的用戶輸入的區別。瞭解格式化字元串(format string)的概念,學會如何創建包含變數內容的字元串。使用專門的格式和語法把變數的內容放到字元串里,然後進行格式化的列印輸出。 1.1、用戶輸入 在 ...


1、習題 5: 更多的變數和列印

學習目標:瞭解用戶輸入方法,明白pthon2和Python3之間的用戶輸入的區別。瞭解格式化字元串(format string)的概念,學會如何創建包含變數內容的字元串。使用專門的格式和語法把變數的內容放到字元串里,然後進行格式化的列印輸出。

1.1、用戶輸入

在Python3中通常使用的input() 函數直接和用戶進行交互,用於等待用戶的輸入。

在Python2中通常使用raw_input() 函數來和用戶進行交互,基本上raw_input() = input() (python3中),python2中的input() 函數基本上不用,因為在Python2中input() 函數會檢查用戶輸入的是字元還是變數,舉個慄子:如果之前定義了name的值,那麼name為變數,則當我們輸入name的時候,會返回變數name的值,如果之前沒有定義name的值則會直接報錯。

1547562594689

1547562682169

所以:對於用戶輸入,在Python2 中使用raw_input() ,在Python3中使用 input() 即可

1.2、格式化輸出

python格式化輸出有兩種方式:百分號和format
format的功能要比百分號方式強大,其中format獨有的可以自定義字元填充空白、字元串居中顯示、轉換二進位、整數自動分割、百分比顯示 等功能是百分號方式不能相比的

習題五中的練習代碼是:

#! -*-coding=utf-8 -*-

my_name = "Zed A. shaw"
my_age = 35
my_height = 74
my_weight = 180
my_eyes = "Blue"
my_teeth = "White"
my_hair = "Brown"

print "Let,s talk about %s." % my_name

print "He's %d inches tall." % my_height

print "He's %d pounds heavy." % my_weight

print "Actually that's not too heavy."

print "He's got %s eyes and %s hair." % (my_eyes,my_hair)

print "His teech are usually %s depending on the coffee." %  my_teeth

#this line is tricky ,try to get it exactly right
print "If I add %d, %d, and %d I get %d." % (my_age,my_height,my_weight,my_age + my_height + my_weight)

上述代碼的運行結果為:

C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-1.py
Let,s talk about Zed A. shaw.
He's 74 inches tall.
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teech are usually White depending on the coffee.
If I add 35, 74, and 180 I get 289.

Process finished with exit code 0

從上面的代碼可以瞭解到,%d 和 %s 都是占位符,顧名思義,就是提前占個位置,後面在用%後面的值來替換該占位符,將值放到正確的位置上。

註意:

  • %d: 將整數、浮點數轉換成 十 進位表示,並將其格式化到指定位置
  • %s: 獲取傳入對象的__ str __方法的返回值,並將其格式化到指定位置

同理還有%f, %o %g 等占位符。這裡就不一一贅述了。

2、加分習題:

  1. 修改所有的變數名字,把它們前面的my_去掉。確認將每一個地方的都改掉,不
    只是你使用=賦值過的地方。
  2. 試著使用更多的格式化字元。例如 %r 就是是非常有用的一個,它的含義是“不管什
    麽都列印出來”。
  3. 在網上搜索所有的 Python 格式化字元。
  4. 試著使用變數將英寸和磅轉換成釐米和千克。不要直接鍵入答案。使用 Python 的
    計算功能來完成。

3、我的答案

3.1、修改所有的變數名字,把它們前面的my_去掉

#! -*-coding=utf-8 -*-

name = "Zed A. shaw"
age = 35
height = 74
weight = 180
eyes = "Blue"
teeth = "White"
hair = "Brown"

print "Let,s talk about %s." % name

print "He's %d inches tall." % height

print "He's %d pounds heavy." % weight

print "Actually that's not too heavy."

print "He's got %s eyes and %s hair." % (eyes,hair)

print "His teech are usually %s depending on the coffee." %  teeth

#this line is tricky ,try to get it exactly right
print "If I add %d, %d, and %d I get %d." % (age,height,weight,age + height + weight)
C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-2.py
Let,s talk about Zed A. shaw.
He's 74 inches tall.
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teech are usually White depending on the coffee.
If I add 35, 74, and 180 I get 289.

Process finished with exit code 0

上述代碼去掉前面的“my_”, 並未發現問題。

3.2、使用%r 格式化字元

舉個慄子:

1547565218455

%s 和 %r 的用法區別:

其主要區別在於 %r 把原始的信息顯示了出來,如字元串保留了引號,%r 用來做 debug處理,因為因為它會顯示變數的原始數據(raw data),而其它的符號則是用來向用戶顯示輸出的。%s 只是顯示其值。

3.3、Python格式化字元

字元串格式代碼如下:

1547569854148

3.4、試著使用變數將英寸和磅轉換成釐米和千克,然後使用Python計算**

1547566460309

4、課後擴展

4.1、字元串拼接實現格式化輸出

字元換一般用“+”加號進行字元串的拼接,一般情況下,字元串拼接情況下的格式化輸出不常用

#! -*-coding=utf-8 -*-

name = raw_input("name:")
age = raw_input("age:")
job = raw_input("job:")
salary = raw_input("slary:")

person_infomation = '''
----------------'''+ name + '''的個人信息----------------
name:'''+ name +'''
age :'''+ age + '''
job :'''+ job + '''
salary:'''+ salary +'''
'''
print person_infomation

上述代碼的運行結果為:

C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-4.py
name:kang   #手工輸入的信息
age:24
job:doctor
slary:3000
# 列印輸出的信息
----------------kang的個人信息----------------
name:kang
age :24
job :doctor
salary:3000

Process finished with exit code 0

上述代碼就是一個字元串拼接格式化輸出的實例,使用加號進行字元串的拼接,但是一般不建議這麼寫,因為在因為拼接的字元串寫法比較差,執行速度慢一般不建議使用,同時需要開闢好幾塊記憶體,效率低下。

4.2、占位符%s實現格式化輸出

如上面習題5實例代碼,但是還有幾個點需要註意一下:

#! -*-coding=utf-8 -*-

name = raw_input("name:")
age = raw_input("age:")
job = raw_input("job:")
salary = raw_input("slary:")

person_infomation = '''
---------------- %s 的個人信息----------------
name:%s
age :%s
job :%s
salary:%s
''' % (name,name,age,job,salary)

print person_infomation

上述代碼的運行結果為:

C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-5.py
name:kang
age:34
job:doctor
slary:30000

---------------- kang 的個人信息----------------
name:kang
age :34
job :doctor
salary:30000

Process finished with exit code 0

註意:

上面有幾個占位符那麼下麵就需要引用幾個變數,數量上要一一對應,不然程式會直接報錯

%s %d %f幫助檢測用戶輸入的數據類型是否是要求的,不是就直接報錯。比如說,我們需要輸入的age為整數,那麼如果我們使用%s進行占位,那麼我們輸入的值就會自動被認為是字元型,如果我們需要輸入的值為整數型那麼需要用%d進行占位。

4.3、用.format實現格式化輸出

相對於占位符%s實現格式化輸出這中方式,format功能更強大,該函數把字元串當成一個模板,通過傳入的參數進行格式化,並且使用大括弧‘{}’作為特殊字元代替‘%’。

.format的位置匹配規則:

  • 不帶編號,即“{}”
  • 帶數字編號,可調換順序,即“{1}”、“{2}”
  • 帶關鍵字,即“{a}”、“{tom}”

4.3.1 、不帶編號的情況

首先看第一個,不帶編號的情況,就是按照從前到後的順序依次匹配

#! -*-coding=utf-8 -*-

name = raw_input("name:")
age = raw_input("age:")
job = raw_input("job:")
salary = raw_input("slary:")

person_infomation = '''
---------------- {} 的個人信息----------------
name:{}
age :{}
job :{}
salary:{}
''' .format(name,name,age,job,salary)

print person_infomation
C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-5.py
name:Jack
age:43
job:teacher
slary:20000

---------------- Jack 的個人信息----------------
name:Jack
age :43
job :teacher
salary:20000

Process finished with exit code 0

上面這個代碼就是運用了.format() 的不帶編號匹配原則,從前到後依次填充format( ) 括弧中的值。註意前後順序很重要,不然就會亂序的。

4.3.2、帶數字編號的情況

帶數字的情況是.format大括弧{x}中是0-n,使用{0-n}來先進行占位,然後再在下麵使用.format引用上面已定義的變數(一,一定義)

1547569040579

4.3.3、帶關鍵字的情況

這裡的.format主要是使用多個變數進行占位{_name}然後下麵再用.format將定義的變數名和上面已定義的變數進行連接(一,一對應)

#! -*-coding=utf-8 -*-

name = raw_input("name:")
age = raw_input("age:")
job = raw_input("job:")
salary = raw_input("slary:")

person_infomation = '''
---------------- {_name} 的個人信息----------------
name:{_name}
age :{_age}
job :{_job}
salary:{_salary}
''' .format(_name = name,
            _age = age,
            _job = job,
            _salary = salary)

print person_infomation
C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-6.py
name:kang
age:34
job:teacher
slary:3000

---------------- kang 的個人信息----------------
name:kang
age :34
job :teacher
salary:3000

Process finished with exit code 0

5、習題總結

習題5主要是學習了和用戶交互輸入需要註意的地方,還學習了格式化輸出的各種形式。重點是.format() 函數的使用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 個人博客原文 "創建型模式:工廠方法" 簡介 姓名 :工廠方法 英文名 :Factory method Pattern 價值觀 :擴展是我的專屬 個人介紹 : Define an interface for creating an object,but let subclasses decide w ...
  • 前一陣子剛整理完RocketMQ4.3.x版本的相關配置的工作,接下來就來測試一下改變參數會帶來什麼好的結果 首先我就選中了useEpollNativeSelector 這個參數 預設這個參數是 false 這個參數的意思就是是否啟用Epoll IO模型。Linux環境建議開啟 然後我就打開了這個參 ...
  • 一、引言 生活中有很多模板,如:簡歷模板、論文模板,PPT模板,所謂模板就是有一個特定的格式,但是可以根據自身的需求進行改動,然後實現自己的功能。這樣的好處就是可以減少自身的工作量,想想網上那麼多好的PPT模板,改吧改吧就成自己的,這是一件多酸爽的事情! 二、例子入手 現在有兩個類,分別是泡茶和泡咖 ...
  • 一直想寫關於產品設計思路或者說方案策略性的文章,一直都不好下筆,因為產品設計是一個很大很空佷泛話題,而且每個人都有自己的一套思路。基於以上情況本文只是總結個人的一套思路,供大家參考。 1.以人為本的黃金設計定律 任何產品的設計都是基於目標用戶的需求而設計,其目的是為用戶解決需求的同時並提供更高的價值 ...
  • 一、引言 電商項目中一個常見場景:提交訂單操作,提交訂單後有很多後續動作,例如:檢查訂單, 創建訂單, 減庫存,創建支付鏈接等等,這些子類的內部操作都很複雜。如果我們的客戶端程式要直接跟這些內容子系統進行耦合,那麼客戶端就得隨著子系統的改動而改動。提交訂單操作在一個電商系統中很多地方都會出現,如果每 ...
  • 以下為DI控制反轉個人理解煩請各位大牛指教~ 編寫程式時我們應當遵循抵耦合高內聚的原則(各個功能模塊互不依賴). 我們可以利用面向對象裡面介面的特性來進行DI控制反轉,讓功能模塊全部依賴介面,而不依賴具體的實現類,當程式跑起來以後通過註入的方式註入具體的實現類如以下代碼: 這樣,購物車類就實現了松耦 ...
  • 內容過程,把做工程過程較好的內容片段備份一次,如下的內容是關於 JavaBean到JSon格式的轉換例子的內容,應該對各朋友有一些用處。 User u = new User(); u.setId(1); u.setName("lizhi"); u.setAge(24); u.setHeigh("17 ...
  • 本篇主要介紹的是SpringCloud中的服務消費者(Feign)和負載均衡(Ribbon)功能的實現以及使用Feign結合Ribbon實現負載均衡。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...