实验三 字符类型及其操作(新)
第1關(guān):判斷回文數(shù)
任務(wù)描述
本關(guān)任務(wù):輸入一個整數(shù),判斷其是否回文數(shù)。 回文數(shù)是指該數(shù)翻轉(zhuǎn)后也等于該數(shù)本身。例如12321就是回文數(shù),12345不是回文數(shù)。
相關(guān)知識
為了完成本關(guān)任務(wù),你需要掌握:1.如何獲判斷字符串是否都是數(shù)字字符,2.如何得到翻轉(zhuǎn)后的字符串。
判斷字符串是否數(shù)字
str.isnumeric()方法可以判斷字符串str是否都是數(shù)字字符。若都是數(shù)字字符,返回true,否則返回false
字符串翻轉(zhuǎn)
通過字符串[::-1]的切片形式可以得到翻轉(zhuǎn)的字符串 或者 通過循環(huán),按索引從-1到-n(n為字符串長度),將對應(yīng)的字符一個個連接起來得到翻轉(zhuǎn)的字符串
編程要求
根據(jù)提示,在右側(cè)編輯器補充代碼,接收用戶輸入的字符串。 若字符串不是數(shù)字字符串,提示不是數(shù)字 若字符串x是回文數(shù),顯示x是回文數(shù) 若字符串x不是回文數(shù),顯示x不是回文數(shù)
相關(guān)課件和視頻
相關(guān)實踐教程
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:請輸入字符串12321; 預(yù)期輸出: 12321是回文數(shù)
測試輸入:請輸入字符串12345; 預(yù)期輸出: 12345不是回文數(shù)
測試輸入:請輸入字符串12a; 預(yù)期輸出: 不是數(shù)字
古之立大志者,不惟有超世之才,亦必有堅韌不拔之志。 開始你的任務(wù)吧,祝你成功!
x=input("請輸入一個數(shù)字") #代碼開始 if x.isnumeric() == False:print("不是數(shù)字"); elif x == x[::-1]:print("{}是回文數(shù)".format(x)); else:print("{}不是回文數(shù)".format(x)); #代碼結(jié)束第2關(guān):凱撒密碼解密
任務(wù)描述
本關(guān)任務(wù):編寫一個能對凱撒密碼執(zhí)行解密的小程序。
相關(guān)知識
為了完成本關(guān)任務(wù),你需要掌握:1.凱撒密碼加密的規(guī)則,2.字符的編碼;3.如何遍歷字符串。
凱撒密碼加密的規(guī)則
凱撒密碼是古羅馬凱撒大帝用來對軍事情報進行加密的算法,它采用了替換方法對信息中的每一個英文字符循環(huán)替換為字母表序列該字符后面第三個字符,對應(yīng)關(guān)系如下: 原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文:DEFGHIJKLMNOPQRSTUVWXYZABC
字符編碼
每個字符在計算機中可以表示為一個數(shù)字,稱為編碼。 字符串則以編碼序列方式存儲在計算機中。 目前,計算機采用的重要編碼是ASCII編碼。 asc碼表如圖所示
字符A的編碼是65,字符B的編碼是66,其余字母以此類推 ord(字符)函數(shù)可以返回字符的編碼 chr(碼值)函數(shù)可以返回編碼對應(yīng)的字符 例如,chr(65)是'A' ord('D')是68
如何遍歷字符串
for 字符變量 in 字符串: <語句塊> 從字符串中逐一提取每個字符,放在字符變量中,對提取到的每個字符執(zhí)行一次循環(huán)體 例如,要統(tǒng)計字符串s中元音字母的個數(shù)
相關(guān)課件和視頻 字符串操作
編程要求
根據(jù)提示,在右側(cè)編輯器補充代碼,實現(xiàn)凱撒密碼解密。 即輸入一串采用凱撒密碼加密后的字符串(大寫字母),輸出解密后的字符串
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:WKLV LV DQ DSSOH; 預(yù)期輸出: "THIS IS AN APPLE" 提示:大寫英文字母才按規(guī)則進行解密
長風(fēng)破浪會有時,直掛云帆濟滄海。 開始你的任務(wù)吧,祝你成功!
mw = input("") #代碼開始 for ch in mw:if "a"<=ch<="z":print(chr(ord("a")+(ord(ch)-ord("a")-3)%26),end='')elif "A"<=ch<="Z":print(chr(ord("A")+(ord(ch)-ord("A")-3)%26),end='')else:print(ch,end='') #代碼結(jié)束第3關(guān):簡單密碼加密
任務(wù)描述
某用戶在存儲自己的密碼時(密碼由大小寫英文字母和數(shù)字組成),為了不被別人知曉,將其按下列規(guī)則加密 數(shù)字字符0用9替換,1用8替換,2用7替換,3用6替換,4用5替換,5用4替換,6用3替換,7用2替換,8用1替換 英文字母a用z替換,b用y替換,c用x替換,d用w替換,e用v替換,f用u替換,g用n替換,以此類推 英文字母A用Z替換,B用Y替換,C用X替換,D用W替換,E用V替換,F用U替換,G用N替換,以此類推 編寫程序,輸入用戶的密碼,輸出其加密后的密碼 例如輸入0012xyzM 輸出9987cbaN
相關(guān)課件和視頻
相關(guān)實踐教程
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:123asAB; 預(yù)期輸出: 876zhZY
測試輸入:XYZ123abc45; 預(yù)期輸出: CBA876zyx54
開始你的任務(wù)吧,祝你成功!
p=input("") #代碼開始 dic={}#字典查找 num = [str(i) for i in range(10)] word1 = [chr(i) for i in range(ord("a"),ord("z")+1)] word2 = [chr(i) for i in range(ord("A"),ord("Z")+1)] for i in range(5):dic[num[i]] = num[-i-1]dic[num[-i-1]] = num[i] for i in range(13):dic[word1[i]] = word1[-i-1]dic[word1[-i-1]] = word1[i]dic[word2[i]] = word2[-i-1]dic[word2[-i-1]] = word2[i] #代碼結(jié)束 print(p.translate(str.maketrans(dic)))#翻譯表第4關(guān):信用卡號校驗
任務(wù)描述
本關(guān)任務(wù):編寫一個能判斷信用卡號是否合法的小程序。
信用卡號必須通過lun算法進行校驗,其過程: 1、從卡號最后一位數(shù)字開始,逆向?qū)⑵鏀?shù)位(1、3、5等等)相加。 2、從卡號倒數(shù)第二位數(shù)字開始,逆向?qū)⑴紨?shù)位數(shù)字,先乘以2(如果乘積為兩位數(shù),則將其減去9),再求和。 3、將奇數(shù)位總和加上偶數(shù)位總和,結(jié)果應(yīng)該可以被10整除。 例如,卡號是:5432123456788881 逆向奇數(shù)位為 4 2 2 4 6 8 8 1 和 = 35 逆向偶數(shù)位乘以2(有些要減去9)的結(jié)果:1 6 2 6 1 5 7 7,求和 = 35。 最后 35 + 35 = 70 可以被10整除,認定校驗通過。 注意:信用卡的卡號長度是根據(jù)輸入來確定的。 相關(guān)課件和視頻 字符類型操作
提示: <字符串>[結(jié)尾字符:開始字符:<負整數(shù)>] 可以逆序間隔地取字符 例如 x="hello world" 則x[-1::-2]表示從結(jié)尾字符每隔2個字符取子串,即"drwolh"
編程要求
根據(jù)提示,在右側(cè)編輯器補充代碼,判斷信用卡號是否合法。
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:5432123456788881; 預(yù)期輸出: 合法卡號
測試輸入:955876543; 預(yù)期輸出: 非法卡號
天行健,君子以自強不息。地勢坤,君子以厚德載物。 開始你的任務(wù)吧,祝你成功!
cardid=input("請輸入信用卡號") #代碼開始 digits = [int(x) for x in reversed(cardid)] even_digits = [d*2 for d in digits[1::2]] even_digits = [d//10 + d%10 for d in even_digits] even_sum = sum(even_digits) odd_sum = sum(digits[::2]) if(odd_sum + even_sum)%10==0:print("合法卡號") else:print("非法卡號") #代碼結(jié)束第5關(guān):ISBN校驗
任務(wù)描述
本關(guān)任務(wù): 國際標準書號(ISBN)用10位數(shù)字唯一標識的一本書。 最后一位數(shù)字為校驗位,可以由其他9位數(shù)字計算出來,且d1+2d2+3d3+……+10d10必須是11的倍數(shù)(di的下標表示從右邊起第i個數(shù))。 校驗位必須是介于0到10中的一個數(shù)字,用字母X表示10. 例如,020131452的校驗和是5 10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5為88,是11的倍數(shù)
編寫一個python程序,將9位整數(shù)作為輸入,計算校驗和并打印isbn號 例如,輸入020131452,輸出0201314525
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:711141995; 預(yù)期輸出: 7111419952
測試輸入:730232560; 預(yù)期輸出: 730232560X
開始你的任務(wù)吧,祝你成功!
x=input("") #代碼開始 def cal(string):S = sum([i*int(j) for i,j in zip(range(10,1,-1),"".join(string.split('-')))])N = 11 - S%11if N == 10:return string + 'X'if N == 11:return string + '0'return string + str(N) print(cal(x)) #代碼結(jié)束第6關(guān):打印田字格
任務(wù)描述
本關(guān)任務(wù):編寫一個能打印田字格的小程序。
輸入整數(shù)(大于2小于10),輸出該整數(shù)對應(yīng)的由星號和空格組成的田字格圖形(注意:每一個星號后面有一個空格) 假設(shè)輸入x,第一行,第x行和第2x-1行輸出2x-1個星號空格“* “ 其余行輸出星號空格和2x-4個空格和星號空格和2x-4空格和星號空格
相關(guān)知識
為了完成本關(guān)任務(wù),你需要掌握:1.如何連接和重復(fù)字符串,2.如何循環(huán)。3.if多條件的組合
連接和重復(fù)字符串
字符串的操作符加號+和星號*規(guī)則: x+y:連接兩個字符串x與y x*n與n*x:復(fù)制n次字符串x
固定次數(shù)循環(huán)
固定次數(shù)n次的循環(huán) for i in range(n): 循環(huán)體
if條件的組合
對于if語句,同時需要符合的兩個條件,使用and連接。 例如要求x大于10并且y大于5,輸出yes If x>10 and y>5: print(“yes”) 對于只要符合一個的情況,使用or連接。 例如只要x大于10或y大于5,輸出yes If x>10 or y>5: print(“yes”) 相關(guān)課件和視頻 字符串操作
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:3; 預(yù)期輸出:
開始你的任務(wù)吧,祝你成功!
#打印田字格 x=eval(input()) #代碼開始 for i in range(2*x-1):if i in (0,x-1,2*x-2):print("* "*(2*x-1))else:print("* "+" "*(2*x-4)+"* "+" "*(2*x-4)+"* ") #代碼結(jié)束第7關(guān):數(shù)字漢字轉(zhuǎn)換
任務(wù)描述
不管是阿拉伯?dāng)?shù)字(1、2、3……), 還是所謂漢字小寫數(shù)碼(一、二、三……), 由于筆畫簡單,容易被涂改偽篡。所以一般文書和商業(yè)財務(wù)票據(jù)上的數(shù)字都要采用漢字數(shù)碼大寫: 壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、(“萬、億”本身筆畫已經(jīng)比較復(fù)雜,使用機會也少,沒有必要再用別的字代替)。如“ 3564 元”寫作“叁仟伍佰陸拾肆元” 。
任務(wù)要求
編寫程序,將輸入的阿拉伯?dāng)?shù)字金額轉(zhuǎn)換為漢字數(shù)碼大寫的小程序。假設(shè)給定的數(shù)字不超過1億。
提示:除了最后一個數(shù)字字符,每個數(shù)字字符對應(yīng)一個數(shù)值的漢字和一個權(quán)值的漢字,數(shù)值的漢字由其大小決定,權(quán)值的漢字由其位置決定。 例如12345,1對應(yīng)數(shù)值壹和權(quán)值萬,2對應(yīng)數(shù)值貳和權(quán)值仟,3對應(yīng)數(shù)字叁和權(quán)值佰,4對應(yīng)數(shù)值肆和權(quán)值拾。
提示:設(shè)置兩個字符串 hz='零壹貳叁肆伍陸柒捌玖' dw='拾佰仟萬拾佰仟'。 對輸入字符串(除最后一位)循環(huán),將每位數(shù)字對應(yīng)的數(shù)值漢字和權(quán)值漢字連接起來。最后再連接最后一位的數(shù)字漢字和元即可。
注意:數(shù)值為0的情況。
對于if語句,同時需要符合的兩個條件,使用and連接。 例如要求x大于10并且y大于5,輸出yes If x>10 and y>5: print(“yes”) 對于只要符合一個的情況,使用or連接。 例如只要x大于10或y大于5,輸出yes If x>10 or y>5: print(“yes”)
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:12345 預(yù)期輸出: 壹萬貳仟叁佰肆拾伍元 測試輸入:100 預(yù)期輸出:壹佰元 測試輸入:23451000 預(yù)期輸出:貳仟叁佰肆拾伍萬壹仟元 測試輸入:1009020 預(yù)期輸出: 壹佰萬玖仟零貳拾元 測試輸入: 45689021 預(yù)期輸出:肆仟伍佰陸拾捌萬玖仟零貳拾壹元
提示: 注意對于連續(xù)的0值的處理
騏驥一躍,不能十步;駑馬十駕,功在不舍;鍥而舍之,朽木不折;鍥而不舍,金石可鏤。 開始你的任務(wù)吧,祝你成功!
x=input("") hz='零壹貳叁肆伍陸柒捌玖' dw='拾佰仟萬拾佰仟' y="" #代碼開始 i=len(x) for c in x[:-1]:if c!="0"or(c=="0"and x[-i+1]!="0"and i!=5and i!=9):y=y+hz[int(c)]if c!='0'or(c=='0'and((i==5and y[-1]!="億"and y[-1]!="兆")or(i==9and y[-1]!="兆"))):y=y+dw[i-2]i=i-1 if x[-1]!='0':y=y+hz[int(x[-1])] y=y+"元" #代碼結(jié)束 print(y)第8關(guān):日期漢字格式轉(zhuǎn)換
任務(wù)描述
本關(guān)任務(wù): 編寫程序,用戶輸入阿拉伯?dāng)?shù)字的日期,轉(zhuǎn)換為漢字的日期。 例如,輸入2021/2/25,輸出二零二一年二月二十五日
相關(guān)知識
為了完成本關(guān)任務(wù),你需要掌握:如何返回字符c在字符s中的位置
獲取字符在字符串的位置
使用str.find(c)方法可以返回字符串str中字符c所在位置的序號。 “2021/2/25“.find(“/“)返回數(shù)字4。 str.rfind(c)方法可以返回從尾部起,字符串str中字符c所在位置的序號。 “2021/2/25“.rfind(“/“)返回數(shù)字6。
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入:2021/3/18; 預(yù)期輸出: 二零二一年三月十八日
測試輸入:2020/12/1; 預(yù)期輸出: 二零二零年十二月一日
提示: 將年月日分別截取出來處理 對于月份等于10、大于10和小于10分別處理 對于日號也要分幾種情況考慮: 小于10、等于10、10的整數(shù)倍和不是10的整數(shù)倍
[解題視頻]()
開始你的任務(wù)吧,祝你成功!
x=input("") hz="零一二三四五六七八九" #代碼開始 nf=x[:x.find("/")] zwnf="" for c in nf:zwnf=zwnf+hz[eval(c)] yf=x[x.find("/")+1:x.rfind("/")] if eval(yf)<10:zwyf=hz[eval(yf)] elif eval(yf)==10:zwyf="十" else:zwyf="十"+hz[eval(yf[-1])] rh=x[x.rfind("/")+1:] if eval(rh)<10:zwrh=hz[eval(rh)] elif eval(rh)==10:zwrh="十" elif eval(rh)%10==0:zwrh=hz[eval(rh[0])]+"十" else:if eval(rh)<20:zwrh="十"+hz[eval(rh[-1])]else:zwrh=hz[eval(rh[0])]+"十"+hz[eval(rh[-1])] #代碼結(jié)束 print(zwnf+"年"+zwyf+"月"+zwrh+"日")第9關(guān):輸出格式化字符
任務(wù)描述
本關(guān)任務(wù):輸入表示武力、速度、智力、統(tǒng)治的四個整數(shù)(10的倍數(shù),小于等于200),輸出相應(yīng)結(jié)果(使用format函數(shù)) 注意: 輸出第一行為 武力是空格30空格空格3星號 輸出第三行為 智力是空格110空格11星號 數(shù)字前面一個空格 數(shù)字后的空格個數(shù)與數(shù)字位數(shù)有關(guān) 提示: 是后面有一個固定的空格 數(shù)值部分指定4個輸出寬度左對齊 *號重復(fù)的次數(shù)必須為整數(shù) /運算的結(jié)果是實數(shù) //運算的結(jié)果是整數(shù)
相關(guān)知識
為了完成本關(guān)任務(wù),你需要掌握:格式化字符串
格式化字符串
format()方法的基本使用
<模板字符串>.format(<逗號分隔的參數(shù)>) 模板字符串由一系列槽組成(槽用大括號表示), 用來控制修改字符串中嵌入值出現(xiàn)的位置, 將format()逗號分隔的參數(shù)按照序號關(guān)系替換到模板字符串的槽中。 模板字符串的槽除了包括參數(shù)序號,還可以包括格式控制信息。 {<參數(shù)序號>: <格式控制標記>} 格式控制標記包括:<填充><對齊><寬度>,<.精度><類型> 6個字段。
相關(guān)課件和視頻 字符格式化
編程要求
根據(jù)提示,輸入表示武力、速度、智力、統(tǒng)治的四個整數(shù)(10的倍數(shù),小于等于200),輸出相應(yīng)結(jié)果(使用format函數(shù))
測試說明
平臺會對你編寫的代碼進行測試:
測試輸入: 請輸入武力120 請輸入速度80 請輸入智力20 請輸入統(tǒng)治40 預(yù)期輸出:
書讀百遍,其義自見。 開始你的任務(wù)吧,祝你成功!
gl=eval(input("請輸入武力")) sd=eval(input("請輸入速度")) zl=eval(input("請輸入智力")) tzl=eval(input("請輸入統(tǒng)治")) #代碼開始 print('武力是 {0:<4}'.format(gl)+"*"*(int(gl)//10)) print('速度是 {0:<4}'.format(sd)+"*"*(int(sd)//10)) print('智力是 {0:<4}'.format(zl)+"*"*(int(zl)//10)) print('統(tǒng)治是 {0:<4}'.format(tzl)+"*"*(int(tzl)//10)) #代碼結(jié)束總結(jié)
以上是生活随笔為你收集整理的实验三 字符类型及其操作(新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html转pdf(总结五种方法Java)
- 下一篇: 各省简称[转载----作为常识存储]