-
字符串的概念和特點
字符串既可以使用單引號''
,也可以使用雙引號""
來創建
可以使用+
運算符來拼接字符串,并返回字符串拼接后的結果。
first_name = "Tom"
last_name = "Jerry"
full_name = first_name + " " + "and" + " " + last_name
# full_name 現在是 Tom and Jerry
-
字符串的創建、索引、元素的訪問以及遍歷操作
索引、for循環遍歷、切片獲取子字符串(切片后會返回新字符串,需要一個變量來接受)
-
字符串的常用方法
len()、split()
join():?將列表中的字符串連接成一個新的字符串,你可以指定連接符號,比如下面的示例。
persons = ["tom", "jerry", "mike"]
text = " ".join(persons)
#將列表中的字符串以空格連接在一起,相當于split的反向操作。"tom jerry mike"
replace():?用于替換字符串中的指定子字符串。
str1 = "Hello, world!"
str2 = str1.replace("World", "Python")
-
格式化字符串
在Python中,整數相除會得到浮點數結果,即使結果是一個整數,也會以浮點數的形式表示。(如果用//呢?)
想要在Python中輸出保留兩位小數的數字,可以使用format()
方法,?format()
方法通常用于字符串中的占位符替換,占位符通常用花括號?{}
?表示。你可以將占位符插入到字符串中,然后使用?format()
?方法來將實際值插入這些占位符。
number = 3.1415926
# {}是一個占位符,輸出結果時會將format()參數里的內容替換在{}中,:.2f 表示保留兩位小數
formatted_number = "{:.2f}".format(number)
print(formatted_number)
為什么要用雙引號“{ }”呢?是因為變量類型是字符串?還是只有語法的要求?
-
flag
編程思想
當循環遇到{A, B, C, D, F}
以及空格之外的字符時,會輸出"Unknown"
, 然后退出for循環
的執行,但是仍然會執行循環之后的語句,即print
語句,實際上,這行代碼不應該被執行,應該怎樣做才能避免這行代碼的執行呢?
我們知道if(條件)
可以控制語句的執行,當條件為真的時候,if
結構體中的代碼可以執行,條件為假的時候則不用執行,所以我們可以聯想到下面的形式:
if condition:print("{:.2f}".format(sum_grade / count))
也就是說,我們可以采用這樣一種思路,事先給每一行字符串一個“真的令牌”,字符串遍歷處理過程中,如果有哪一行字符串中有{A, B, C, D, F}
以及空格之外的字符,則把“真令牌”替換成“假令牌”,這樣當走出循環之后再進行輸出處理時,就會因為不認識這個“假令牌”而不進行輸出。
字符串的格式化輸出
- 使用
%
操作符進行格式化
name = "張三"
age = 20formatted_string = "姓名:%s, 年齡:%d " % (name, age)
print(formatted_string)
使用%
會將后面的變量name, age
一一對應插入到對應的占位符上,其中%s
表示字符串,%d
表示整數,?%f
表示浮點數。
- 字符串
format()
方法
name = "張三"
age = 20formatted_string = "姓名:{}, 年齡:{}".format(name, age)
print(formatted_string)
format()
方法允許使用占位符{}
來插入值,并使用format()
方法的參數來提供要插入的值,和上面的操作符很類似。
f-字符串
以f
開頭,后面跟著字符串,字符串中的表達式用大括號 {} 包起來,它會將變量或表達式計算后的值替換進去。
name = "張三"
age = 20formatted_string = f"姓名: {name},年齡:{age}"
print(formatted_string)
while True:try:s = input()score = 0count = 0# flag = 1for c in s:flag = 1# count += 1if c == "A":score += 4count += 1elif c == "B":score += 3count += 1elif c == "C":score += 2count += 1elif c == "D":score += 1count += 1elif c == "F":score += 0count += 1elif c == " ":continueelse:flag = 0print("Unknown")breakif flag:print("{:.2f}".format(score/count))except:break