文章目錄
python必背入門代碼、1、[單詞的長度](http://noi.openjudge.cn/ch0107/24/)
2、單詞翻轉
3、回文子串
4、加密的病歷單
5、字符串移位包含問題
6、 ISBN號碼
7、字符環
8、
1、單詞的長度
def cin():
return input().split()
x = cin()
print(','.join([str(len(i)) for i in x]))
2、單詞翻轉
實際上就是對每個單詞進行字符串翻轉
描述
輸入一個句子(一行),將句子中的每一個單詞翻轉后輸出。
輸入
只有一行,為一個字符串,不超過500個字符。單詞之間以空格隔開。
輸出
翻轉每一個單詞后的字符串,單詞之間的空格需與原文一致。
樣例輸入
hello world
樣例輸出
olleh dlrow
太久沒做題了,腦子也不好使了,大概是目前用Python寫的最長的一次了。
x = input()
l = 0
flag = True
i = 0
len = len(x)
while i < len:
if flag == True and x[i].isspace() == False:
l = i
flag = False
elif flag == False and x[i].isspace() == True:
s = x[l:i]
print(s[::-1],end="")
flag = True
if x[i].isspace():
print(" ",end="")
i += 1
i = len
i -= 1
while i >= 0:
if i == 0 or x[i].isspace():
s = x[i:len]
print(s[::-1],end="")
break
i -= 1
3、回文子串
描述
給定一個字符串,輸出所有長度至少為2的回文子串。
回文子串即從左往右輸出和從右往左輸出結果是一樣的字符串,比如:abba,cccdeedccc都是回文字符串。
輸入
一個字符串,由字母或數字組成。長度500以內。
輸出
輸出所有的回文子串,每個子串一行。
子串長度小的優先輸出,若長度相等,則出現位置靠左的優先輸出。
樣例輸入
123321125775165561
樣例輸出
33
11
77
55
2332
2112
5775
6556
123321
165561
def cin():
return input().split()
def ok(s):
l = 0;r = len(s) - 1
while l <= r:
if s[l] != s[r]:
return False
l += 1;r -= 1
return True
x = input()
l = len(x)
for i in range(2,l+1):
j = 0
while j <= l - i:
s = x[j:j+i]
if ok(s):
print(s)
j += 1
4、加密的病歷單
描述
小英是藥學專業大三的學生,暑假期間獲得了去醫院藥房實習的機會。
在藥房實習期間,小英扎實的專業基礎獲得了醫生的一致好評,得知小英在計算概論中取得過好成績后,主任又額外交給她一項任務,解密抗戰時期被加密過的一些傷員的名單。
經過研究,小英發現了如下加密規律(括號中是一個“原文 -> 密文”的例子)
原文中所有的字符都在字母表中被循環左移了三個位置(dec -> abz)
逆序存儲(abcd -> dcba )
大小寫反轉(abXY -> ABxy)
輸入
一個加密的字符串。(長度小于50且只包含大小寫字母)
輸出
輸出解密后的字符串。
樣例輸入
GSOOWFASOq
樣例輸出
Trvdizrrvj
考察Python字符與Ascll碼的轉換
x = list(input())
x = x[::-1]
i = 0;l = len(x)
while i < l:
if x[i]>='a' and x[i] <= 'z':
x[i] = x[i].upper()
a = ord(x[i])+3
if a > ord('Z') : a = a - ord('Z') + ord('A') - 1
x[i] = chr(a)
else:
x[i] = x[i].lower()
a = ord(x[i]) + 3
if a > ord('z'): a = a - ord('z') + ord('a') - 1
x[i] = chr(a)
i += 1
print(''.join(x))
5、字符串移位包含問題
描述
對于一個字符串來說,定義一次循環移位操作為:將字符串的第一個字符移動到末尾形成新的字符串。
給定兩個字符串s1和s2,要求判定其中一個字符串是否是另一字符串通過若干次循環移位后的新字符串的子串。例如CDAA是由AABCD兩次移位后產生的新串BCDAA的子串,而ABCD與ACBD則不能通過多次移位來得到其中一個字符串是新串的子串。
輸入
一行,包含兩個字符串,中間由單個空格隔開。字符串只包含字母和數字,長度不超過30。
輸出
如果一個字符串是另一字符串通過若干次循環移位產生的新串的子串,則輸出true,否則輸出false。
樣例輸入
AABCD CDAA
樣例輸出
true
def cin():
return input().split()
x = cin()
s = x[0]
t = x[1]
if len(s) < len(t) :
tmp = s;s = t;t = tmp
i = 0;l = len(s)
while i < l:
t1 = s[:i];t2 = s[i:l]
t1 = t2 + t1
if t1.find(t) != -1:
print("true")
exit()
i += 1
print("false")
6、 ISBN號碼
描述
識別碼的計算方法如下:
首位數字乘以1加上次位數字乘以2……以此類推,用所得的結果mod 11,所得的余數即為識別碼,如果余數為10,則識別碼為大寫字母X。例如ISBN號碼0-670-82162-4中的識別碼4是這樣得到的:對067082162這9個數字,從左至右,分別乘以1,2,…,9,再求和,即0×1+6×2+??+2×9=158,然后取158 mod 11的結果4作為識別碼。
你的任務是編寫程序判斷輸入的ISBN號碼中識別碼是否正確,如果正確,則僅輸出“Right”;如果錯誤,則輸出你認為是正確的ISBN號碼。
輸入
只有一行,是一個字符序列,表示一本書的ISBN號碼(保證輸入符合ISBN號碼的格式要求)。
輸出
共一行,假如輸入的ISBN號碼的識別碼正確,那么輸出“Right”,否則,按照規定的格式,輸出正確的ISBN號碼(包括分隔符“-”)。
樣例輸入
樣例 #1: 0-670-82162-4
樣例 #2: 0-670-82162-0
樣例輸出
樣例 #1: Right
樣例 #2: 0-670-82162-4
x = list(input())
if x[-1] == 'X': res = 10
else: res = int(x[-1])
ans = 0;base = 1
x.pop()
for i in x:
if str(i).isdigit():
ans += int(i) * base
base += 1
ans %= 11
if ans == res:
print("Right")
else:
if ans == 10:ans = 'X'
else: ans = str(ans)
print("".join(x) + ans)
7、字符環
描述
有兩個由字符構成的環。請寫一個程序,計算這兩個字符環上最長連續公共字符串的長度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾連在一起,構成一個環;字符串“MADJKLUVKL”的首尾連在一起,構成一個另一個環;“UVKLMA”是這兩個環的一個連續公共字符串。
輸入
一行,包含兩個字符串,分別對應一個字符環。這兩個字符串之間用單個空格分開。字符串長度不超過255,且不包含空格等空白符。
輸出
輸出一個整數,表示這兩個字符環上最長公共字符串的長度。
樣例輸入
ABCEFAGADEGKABUVKLM MADJKLUVKL
樣例輸出
6
def cin():
return input().split()
'''
這類字符串環的問題,比較直接的做法就是破環為鏈,即s = s * 2
這樣就能比較好的模擬字符串環的問題了,但注意一點,我們截取子串
長度的時候,長度的上邊界仍就是原來給出的鏈的長度
'''
x = cin()
s = x[0];t = x[1]
p = (s if len(s) < len(t) else t) # 挑選長度小的那個串截取子串
n = len(p);p *= 2 # 上邊界 ; 破環為鏈
if len(s) != 1:s = s*2
if len(t) != 1:t = t*2
ans = 0
for i in range(n):# 枚舉子串起點
for j in range(1,n+1):# 枚舉截取子串長度
tmp = p[i:i+j] # 子串
if s.find(tmp) != -1 and t.find(tmp) != -1:
ans = max(ans,len(tmp))
print(ans)
8、
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态