程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python語言】Python控制語言實驗

編輯:Python

實驗1:判斷是否是回文數
判斷一個正整數是不是回文數。如果一個數的正向和逆向的講法相同,那麼稱該數為回文數,如12321、7887是回文數
輸入:一個正整數
輸出:如果是回文數,輸出“是回文數”;否則輸出“不是回文數”
測試樣例:

樣例1:個位數
輸入:3
輸出:是回文數

樣例2:奇數位回文數
輸入:1578751
輸出:是回文數

樣例3:偶數位回文數
輸入:12344321
輸出:是回文數

樣例4:非回文數
輸入:1234231
輸出:不是回文數

x=int(input("請輸入一個整數:"))
if x<0 or(x%10==0 and x!=0):
print("不是回文數")
elif not x//10:
print("是回文數")
else:
n=0
while(x>n):
n=n*10+x%10
x//=10
if x==n or x==(n//10):
print("是回文數")
else:
print("不是回文數")

改進:將其當作字符串,十分快捷

x=int(input("請輸入一個正整數:"))
x=str(x)
print("是回文數") if x==x[::-1] else print("不是回文數")

參考代碼:

text = input("請輸入一個字符串:")
l = len(text)
mid = int(l/2)
if text[0:mid] == text[l-1:mid-int(not(l%2)):-1]:
print("是回文")
else:
print("不是回文")

運行截圖:

實驗2:猜年齡
題目:輸入猜測的年齡,直到猜對為止,每次給出猜大了或猜小了的提示,猜測成功時輸出猜測的次數。

提示:被猜的數字采用隨機數方式生成,生成方式用random模塊實現,具體方法如下:
import random
age = random.randint(1, 100) #生成1到100內的整數

測試樣例:
樣例(假設被猜年齡為53):
輸入:1
輸出:猜小了
輸入:50
輸出:猜小了
輸入:60
輸出:猜大了
輸入:55
輸出:猜小了
輸入:53
輸出:猜對了,共猜了4次

import random
age = random.randint(1, 101)
times=0
guess=0
print (age) #輸出了隨機生成的數
while guess!=age:
guess=int(input("請輸入你要猜測的數字:"))
if guess>age:
print("猜大了")
elif guess<age:
print("猜小了")
times=times+1
if guess==age:
print("猜對了,共猜了",times,"次")

參考代碼:

from random import randint
age = randint(1, 101)
times = 0
while True:
guess = int(input("輸入你猜的數:"))
times += 1
if guess < age:
print("猜小了")
elif guess > age:
print("猜大了")
else:
print("猜對了!共猜了{}次".format(times))
break

運行截圖:

實驗3:提取列表中的數據,放到字典中
題目:定義一個列表stus,列表stus中的每個元素是包括學號、語文成績、數學成績、英語成績的字典類型,列表數據如下:
stus = [{‘sid’:’102’, ‘Chinese’:90, ‘Math’:80, ‘English’:70}, {‘sid’:’103’, ‘Chinese’:76, ‘Math’:89, ‘English’:88}, {‘sid’:’101’, ‘Chinese’:95, ‘Math’:91, ‘English’:65}]
提取列表stus中的數據,放到字典courses中,按學號從大到小的順序輸出courses內容,輸出形式如下:
103:[76, 89, 88]
102:[90,80,70]
101:[95,91,65]

思路:
字典作為元素定義在列表裡面,用列表的遍歷就能提出來,提取出來之後直接就是字典,用items()來直接獲取。以元組it來訪問每一對鍵值,就行了。因為要把學號提取出來,所有要比較’it[0]==sid’,相等則將it[1]提取出來作為鍵k,不是則將成績提取出來作為courses的值v。因為有多門課,所以v是以列表的形式保存,所以先定義v是個空列表,再將值用append()函數將其儲存,因為按照學號從大到小輸出,我們需要將字典的鍵值提取到列表score裡,最好我們還要進行排序,用sort()函數。最後按格式輸出。

提示:
Sort函數:
格式:sort(key = lambda x:x[0],reverse = True)
此處的lambda是默認的,記住就好。x:x[0]代表對鍵(key)進行排序,而x:x[1]代表對值(values)進行排序,reverse=true表示降序,reverse=false表示逆序。

代碼:

stus = [{
'sid':'102','Chinese':90, 'Math':80, 'English':70}, {
'sid':'103', 'Chinese':76, 'Math':89, 'English':88}, {
'sid':'101', 'Chinese':95, 'Math':91, 'English':65}]
courses={
}
for item in stus:
v=[]
for it in item.items():
if it[0]=='sid':
k=it[1]
else:
v.append(it[1])
courses[k]=v
scores=list(courses.items())
scores.sort(key=lambda x:x[0],reverse=False)
for l in scores:
print('{}:{}'.format(l[0],l[1]))

參考代碼:

stus = [{
'sid':'102', 'Chinese':90, 'Math':80, 'English':70},
{
'sid':'103', 'Chinese':76, 'Math':89, 'English':88},
{
'sid':'101', 'Chinese':95, 'Math':91, 'English':65}]
courses = {
}
ids = []
for s in stus:
courses[s['sid']] = [s['Chinese'], s['Math'], s['English']]
ids.append(s['sid'])
ids.sort(reverse=True)
for i in ids:
print(i,courses[i],sep=':')

運行截圖:

實驗4:模擬數據壓縮中的行程長度壓縮方法
行程長度壓縮的方法是,對一個待壓縮的字符串而言,依次記錄每個字符及重復的次數,例如,待壓縮字符串為”AAABBBBCBB”,則壓縮的結果是(A,3)(B,4)(C,1)(B,2)。現要求根據輸入的字符串,得到壓縮後的結果(字符串不區分大小寫,即所有小寫字母均可視為相應的大寫字母)。

提示:可以先用upper方法將所有輸入先轉為大寫字母
輸入一個字符串
輸入壓縮格式
樣例1:無重復字符串
輸入:abcdABCD
輸出:(A,1)(B,1)(C,1)(D,1)(A,1)(B,1)(C,1)(D,1)
樣例2:有重復字符串
輸入:aAaBBbCcaAbbBbbBcCCc
輸出:(A,3)(B,3)(C,2)(A,2)(B,6)(C,4)
代碼:

a=input("請輸入帶壓縮字符串:")
b=a.upper()
r=''
if len (b)==0:
print( r)
l =b[0]
count=1
for i in b[1:]:
if l==i:
count=count+1
else:
r+="({},{})".format(l,count)
l=i
count=1
r+="({},{})".format(l ,count)
print( r)

參考代碼:

text = input("輸入一個字符串:")
text = text.upper()
print(text)
ch = text[0]
t = 1
res = []
for c in text[1:]:
if c == ch:
t += 1
else:
res.append((ch,t))
t = 1
ch = c
res.append((ch,t))
print(res)

運行截圖:


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved