阿爾法python 第三章 基本數據類型

基本數據類型

從尾到頭

從鍵盤輸入一個小於 500 的三位整數,將這個整數乘 2 得到一個新的數,將這個新的數從尾到頭倒敘輸出。

例如:輸入 123 則輸出 642.

# 從鍵盤輸入一個三位數
a = eval(input())
a=2*a
# 將其乘 2 後倒敘輸出
b = a//100
s = a//10-b*10
g = a-b*100-s*10
a = g*100+s*10+b
print(a)

抹零行爲

現有小區停車收費規則如下,每小時收 1 元,1 小時內免費,不足一小時按 1 小時算。

請編程實現:輸入停車時長,計算並輸出所需要收取的停車費。例如,從鍵盤輸入 1.5,則輸出所需要繳納的停車費 1。

# 請輸入停車時長
a = eval(input("請輸入停車時長:"))
a = a-1
# 請計算需要收取的停車費
s = int(a+1)
print(s)

實現加密器

請用程序實現
輸入一個整數num,將輸入的數字進行加密,並將加密後的結果輸出。

以下爲加密的規則:

1.加密結果 = (整數 * 10 + 5) / 2 + 3.14159
2. 加密結果仍爲一整數

示例 1

輸入 輸出
20 105

示例 2

輸入 輸出
35 180
# 請使用 input() 輸入一個整數 num
num = eval(input())

# 請對數字 num 進行加密,並將加密結果輸出
num = (num*10+5)/2+3.14159
num = int(num)
print(num)

判斷奇偶數

請用程序實現: 輸入一個整數,判斷它是奇數還是偶數。如果是奇數,輸出odd;如果是偶數,輸出even。

示例1

輸入 輸出
12 even

示例2

輸入 輸出
13 odd
# 請使用 input() 輸入一個整數 num
num = int(input("輸入一個整數:"))

# 請判斷這個數是奇數還是偶數
if num % 2 == 0:
    print('even')
else:
    print('odd')

公倍數

請用程序實現

輸入一個正整數,判斷它是否是5和7的公倍數。如果是,輸出yes;如果不是,輸出no。

示例 1

輸入 輸出
35 yes

示例 2

輸入 輸出
36 no
# 請使用 input() 輸入一個正整數 num
num = int(input("輸入一個正整數:"))

# 請判斷這個正整數是否是 5 和 7 的公倍數
if num % 35 == 0:
    print('yes')
else:
    print('no')

天天向上的力量第一問

請用程序實現
計算千分之一的力量。

要求如下:

(1) 計算一年 365 天,每天進步千分之一,累計進步到多少,並將計算結果輸出。
(2) 計算一年 365 天,每天退步千分之一,累計剩下多少,並將計算結果輸出。
(3) 輸出時,在一行內輸出進步的結果和退步的結果。

示例

輸出

向上:***, 向下:***

dayup = pow(1.001, 365) 
daydown = pow(0.999, 365)
print("向上:%.2f,向下:%.2f"%(dayup, daydown))

天天向上的力量第二問

請用程序實現
計算千分之五和百分之一的力量。

要求如下:

(1) 計算一年 365 天,每天進步千分之五或百分之一,累計進步到多少,並將計算結果輸出。
(2) 計算一年 365 天,每天退步千分之五或百分之一,累計剩下多少,並將計算結果輸出。
(3) 輸出時,在一行內輸出進步的結果和退步的結果。

示例

輸出

向上:***, 向下:***

dayfactor = 0.005
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

天天向上的力量第三問

請用程序實現
工作日的力量。

要求如下:

(1) 一年 365 天,一週 5 個工作日,每天進步 1%;
(2) 一年 365 天,一週 2 個休息日,每天退步 1%;
(3) 計算按照工作日和休息日的進步或退步情況,經過一年 365 天后,累計剩下多少,並將計算結果輸出。
(4) 輸出時,在一行內輸出計算的結果。

#daydayupQ3.py
 
dayup = 1.0
dayfactor = 0.01
for i in range(365):
    if i % 7 in [6,0]:
        dayup = dayup * (1-dayfactor)
    else:
        dayup = dayup * (1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))

天天向上的力量第四問

工作日模式要努力到什麼水平,才能與每天努力進步 1% 一樣?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A君: 一年 365 天,每天進步 1%,不停歇,365天之後,達到37.78
B君: 一年 365 天,每週工作 5 天休息 2 天,休息日每天退步 1%,那麼工作日應該多努力才能追上A君呢?

請用程序實現
計算要使 B君 和 A君 一年後的進步程度一樣,那麼 B君 每天需要進步的值,並將計算結果輸出。

要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(1) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬一年 365 天,以第 0 天的能力值爲基數,記爲 1.0;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(2) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬當好好學習時,能力值相比前一天提高 1%;當沒有學習時,由於遺忘等原因能力值相比前一天下降 1%;
(3) 輸出保留小數點後三位,冒號後有一個空格。如:

工作日的努力參數是: 0.019。

#DayDayUpQ4.py
def dayUp(df):                       #根據df參數計算工作日力量的函數參數不同,這段代碼可共用def保留字用於定義函數
    dayup = 1
    for i in range(365):
        if i%7 in [6,0]:
            dayup = dayup*(1-0.01)
        else:
            dayup = dayup*(1+df)
    return dayup
dayfactor = 0.01
while dayUp(dayfactor) <37.78:         #while保留字判斷條件是否成立,條件成立時循環執行
    dayfactor += 0.001
print("工作日的努力參數:{:.3f}".format(dayfactor))

刪除字符

請用程序實現
刪除預置代碼中字符串string中的一部分。

要求如下:

(1) 分兩行輸入兩個整數,第一個整數表示字符串 string 的索引 begin,第二個整數表示需要刪除的長度 length。
(2) 將字符串 string 中,從索引 begin 開始,長爲 length 的子字符串刪除。
(3) 輸出字符串 string 刪除後剩下的部分。

示例 1

輸入 輸出
2
3
abfghijklmnopqrstuvwxyz

示例 2

輸入 輸出
1
5
aghijklmnopqrstuvwxyz
string = 'abcdefghijklmnopqrstuvwxyz'
# 請使用 input() 輸入索引 begin 和長度 length
begin=int(input())
length=int(input())
# 請將字符串 string 中,從索引 begin 開始,長爲 length 的字符串刪除,並將剩下的字符串內容輸出
str1=list(string)
del str1[begin:begin+length]
for i in range(len(str1)):
    print(str1[i],end="")

插入字符

請用程序實現

已知字符串 s ,請將另一個字符串 sub 添加到字符串 s 的指定索引位置中,並將添加後的 s 輸出。

示例
輸入

**(第1行是需添加的字符串 sub)
2(第2行是指定的添加位置索引 pos(從0開始計算),且 pos 是字符串 s 的有效索引位置)

輸出

abc**defghijklmnopqrstuvwxyz

s = 'abcdefghijklmnopqrstuvwxyz'
sub=input()
pos=int(input())
str1=list(s)
str1.insert(pos,sub)
for i in range(len(str1)):
    print(str1[i],end="")

你中無我

請用程序實現

給定兩個字符串 s1, s2,刪除字符串 s1 中的屬於 s2 的字符,並輸出結果。

示例 1

輸入 輸出
i love python(第1行輸入爲 s1字符串)
io(第2行輸入爲 s2字符串)
lve pythn(輸出刪除後的 s1字符串)

示例 2

輸入 輸出
i love python
this
love pyon
s1=input()
s2=input()
for i in s1:
    if i not in s2:
        print(i,end="")

拼接最大字符

請用程序實現

輸入兩個長度相等的字符串,將兩字符串中相同索引中較大的字符組成一個新的字符串並輸出,使用 ASCII 碼來比較字符大小。

注:如 ASCII 碼相等,任選 1 個

輸入格式

在兩行中分別輸入兩個字符串,長度相等

輸出格式

在一行中輸出結果字符串

示例 1

輸入 輸出
cat
dog
dot

示例 2

輸入 輸出
brother
sisters
srsthrs
# 請使用 input() 輸入兩個字符串 string1, string2
string1=input()
string2=input()

# 請分別比較兩個字符串中的每一個字符,將大的字符拼接成一個新的字符串,並輸出
str1=list(string1)
str2=list(string2)
for i in range(len(string1)):
    if str1[i]>=str2[i]:
        print(str1[i],end="")
    if str1[i]<str2[i]:
        print(str2[i],end="")

單詞轉換

請用程序實現:輸入一段英文文本 text,將文本中的單詞分別按照 全部小寫、全部大寫 和 標題化 格式輸出。

提示:使用字符串的內建函數。

運行你的程序,使控制檯顯示如下內容:

請輸入一段文本: Beautiful is better than ugl.
全部小寫: beautiful is better than ugl.
全部大寫: BEAUTIFUL IS BETTER THAN UGL.
標題化: Beautiful Is Better Than Ugl.

# 請使用 input() 輸入一段文本 text
text = input()
# 請將文本中的單詞分別按照 全部小寫、全部大寫 和 標題化 格式輸出
print("全部小寫:"+text.lower())          # 把所有字符中的大寫字母轉換成小寫字母
print("全部大寫:"+text.upper())          # 把所有字符中的小寫字母轉換成大寫字母
print("標題化:"+text.title())            # 把每個單詞的第一個字母轉化爲大寫,其餘小寫 

統計詞量

請用程序實現

輸入一段僅由英文字母、空格組成的文本,並通過split()方法統計這段文本中的單詞數量,並將統計結果輸出。

示例 1

輸入 輸出
i love python 3

示例 2

輸入 輸出
hello this is lee who are you 7
# 請使用 input() 輸入一斷文本 text
def word_len(text):
    return len([i for i in text.split(' ') if i])
def main():
    text=  str(input("請輸入字符串:"))
    len= word_len(text)
    print(len)
main()


# 請統計這段文本中的單詞數量,並將統計結果輸出

迴文字符串

如果一個字符串從左往右讀與從右往左讀是相同的字符串,那麼這個字符串就是迴文字符串。如 “level”、"noon"都是迴文字符串。

請用程序實現

輸入一個字符串,判斷它是否爲迴文字符串。如果是迴文字符串,輸出yes;如果不是迴文字符串,輸出no。

示例 1

輸入 輸出
oppo yes

示例 2

輸入 輸出
vivo no
s=input()
s1=list(s)
s1.reverse()
s2=list(s)
if s1==s2:
    print("yes")
else:
    print("no")

過濾敏感字符

請用程序實現:輸入一段英文文本 text,將其中出現的敏感詞改爲*** (三個星號),並將更改後的內容輸出。

注意:敏感字符包括 “fuck”、“shit”、“bitch”,其他的暫不考慮。

運行你的程序,使控制檯顯示如下內容:

**請輸入一段英文文本: Oh, fuck! I’ve lost my keys.
Oh, *! I’ve lost my keys.

請在右側編輯器中編寫代碼,完成練習。

# 請使用 input() 輸入一段英文文本 text
text = input()
Is = ["fuck","shit","bitch"]
# 請將文本中出現的敏感詞改爲`***`,並將更改後的內容輸出
for i in Is:
    if i in text:
        text = text.replace(i,"***")
print(text)        

時間格式化

請根據視頻內容的講解,獲取當前時間,並將獲取到的時間按照年-月-日 時:分:秒的格式打印輸出。

import datetime,time
# 獲取當前時間
now_time = datetime.datetime.now()
# 格式化時間字符串
str_time = now_time.strftime("%Y-%m-%d %X")
tup_time = time.strptime(str_time,"%Y-%m-%d %X")
time_sec = time.mktime(tup_time)
# 轉換成時間戳 進行計算
time_sec += 1
tup_time2 = time.localtime(time_sec)
str_time2 = time.strftime("%Y-%m-%d %X",tup_time2)
print(str_time)
print(str_time2)

文本進度條

採用字符串方式打印可以動態變化的文本進度條‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬,進度條需要能在一行中逐漸變化.

進度條

要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(1) 採用 sleep() 模擬一個持續的進度,獲得文本進度條的變化時間;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(2) 通過 print() 函數實現單行動態刷新,在 print() 函數中更換參數 end 的默認值爲'',每次使用 print() 函數輸出時不能換行;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(3) 要能回退:打印後光標到之前的位置\r

請在 Windows 的命令行(cmd 或 PowerShell)或其他操作系統的命令行下執行 Python 程序,獲得進度條效果。

輸出示例:

輸出進度條

import time
scale=50
print("執行開始".center(scale//2,"-"))
start=time.perf_counter()
for i in range(scale+1):
    a='*'*i
    b='.'*(scale-i)
    c=(i/scale)*100
    dur=time.perf_counter()-start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    time.sleep(0.1)
print("\n"+"執行結束".center(scale//2,'-'))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章