"""
str
'aksfhk',"愛(ài)康很舒服34",'\n\t'"\'
'\u4e00', chr(), ord()
獲取單個(gè)字符: 字符串[下標(biāo)]
獲取部分字符(切片): 字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo):步長(zhǎng)]
字符串[開(kāi)始:結(jié)束]
字符串[::-1]
+,*, >,<,<=,>=,==,!=, =, +=, *=
in/not in
len()
str()
格式字符串
'姓名%s, %d, %.2f, %c' % (name, age, 12.5, 'A')
"""
- 輸入一個(gè)字符串,打印所有奇數(shù)位上的字符
(下標(biāo)是1,3,5,7…位上的字符)
例如: 輸入'abcd1234' 輸出'bd24'
str1 = 'abcd1234'
# 方法一: 遍歷
str2 = ''
for index in range(1, len(str1), 2):
str2 += str1[index]
print(str2)
# 方法二: 切片
print(str1[1::2])
- 輸入用戶名,判斷用戶名是否合法(用戶名長(zhǎng)度6~10位)
user_name = 'xiaoming'
if 6 <= len(user_name) <= 10:
print('合法')
else:
print('不合法')
- 輸入用戶名,判斷用戶名是否合法(用戶名中只能由數(shù)字和字母組成)
例如: 'abc' — 合法 '123' — 合法
‘a(chǎn)bc123a’ — 合法
user_name = 'xiao胡ming87'
for char in user_name:
if not('a' <= char <= 'z' or 'A' <= char <= 'Z' or '0' <= char <= '9'):
print('不合法')
break
else:
print('合法')
- 輸入用戶名,判斷用戶名是否合法(用戶名必須包含且只能包含數(shù)字和字母,并且第一個(gè)字符必須是大寫(xiě)字母)
例如: 'abc' — 不合法 '123' — 不合法
'abc123' — 不合法 'Abc123ahs' — 合法
user_name = 'Abc123ahs'
count = 0 # 數(shù)字的個(gè)數(shù)
if 'A' <= user_name[0] <= 'Z':
for char in user_name[1:]:
if not('a' <= char <= 'z' or 'A' <= char <= 'Z' or '0' <= char <= '9'):
print('不合法')
break
else:
if '0' <= char <= '9':
count += 1
else:
if count == 0:
print('不合法')
else:
print('合法')
else:
print('不合法')
- 輸入一個(gè)字符串,將字符串中所有的數(shù)字字符取出來(lái)產(chǎn)生一個(gè)新的字符串
例如:輸入'abc1shj23kls99+2kkk' 輸出:'123992'
str3 = 'abc1shj23kls99+2kkk'
new_str = ''
for char in str3:
if '0' <= char <= '9':
new_str += char
print(new_str)
- 輸入一個(gè)字符串,將字符串中所有的小寫(xiě)字母變成對(duì)應(yīng)的大寫(xiě)字母輸出
例如: 輸入'a2h2klm12+' 輸出 'A2H2KLM12+'
小寫(xiě)字母轉(zhuǎn)大寫(xiě)字母原理
char = 'h'
new_char = chr(ord(char)-32)
print(new_char)
str4 = 'a2h2klm12+'
new_str = ''
for char in str4:
if 'a' <= char <= 'z':
new_char = chr(ord(char)-32)
new_str += new_char
else:
new_str += char
print(new_str)
- 輸入一個(gè)小于1000的數(shù)字,產(chǎn)生對(duì)應(yīng)的學(xué)號(hào)
例如: 輸入'23',輸出'py1902023'
輸入'9', 輸出'py1902009'
輸入'123',輸出'py1902123'
num = 2
n = 3 # 學(xué)號(hào)的位數(shù)
z_n = n - len(str(num)) # '0'的個(gè)數(shù)
study_id = 'py1902' + '0' * z_n + str(num)
print(study_id)
- 輸入字符串,將字符串的開(kāi)頭和結(jié)尾變成'+',產(chǎn)生一個(gè)新的字符串
例如: 輸入字符串'abc123', 輸出'+bc12+'
str5 = 'abc123'
new_str = '+' + str5[1:-1]+'+'
print(new_str)
- 輸入字符串,獲取字符串的中間字符
例如: 輸入'abc1234' 輸出:'1'
輸入'abc123' 輸出'c1'
"""
奇數(shù)個(gè)字符,中是: len//2
偶數(shù)個(gè)字符,中是: len//2, len//2-1
"""
str6 = 'abc123'
length = len(str6)
if length % 2 == 0:
print(str6[length//2-1], str6[length//2])
else:
print(str6[length//2])
str1 = 'abcd1234'
# 方法一: 遍歷
str2 = ''
for index in range(1, len(str1), 2):
str2 += str1[index]
print(str2)
# 方法二: 切片
print(str1[1::2])
1.不斷的從控制臺(tái)輸入年齡,根據(jù)年齡輸出不同的提示(例如:老年人,青壯年,成年人,未成年,兒童)
輸入'q',就退出
# while True:
# value = input('請(qǐng)輸入年齡,輸入q結(jié)束:')
# if value == 'q':
# break
# age = int(value)
# if age <= 12:
# print('兒童')
# elif age < 18:
# print('未成年')
# elif age <= 50:
# print('青壯年')
# else:
# print('老年')
2.計(jì)算5的階乘 5!的結(jié)果是
# 5! = 5*4*3*2*1
print('==============第二題============')
n = 5
sum1 = 1
for x in range(1, n+1):
sum1 *= x
print(sum1)
3.求1+2!+3!+...+20!的和
思路: 1. 先分別取出1~20 2.求每次取出的數(shù)的階乘
n = 20
sum2 = 0 # 保存最后的和
for num in range(1, n+1):
sum1 = 1 # 保存每個(gè)數(shù)的階乘
for x in range(1, num+1):
sum1 *= x
sum2 += sum1
print(sum2)
練習(xí): 外面的for循環(huán)循環(huán)第5次的時(shí)候, 里面的循環(huán)第3次, sum1的值和sum2的值分別是多少。寫(xiě)出執(zhí)行過(guò)程
# sum1 - 6, sum2 - 33
"""
num = 1,2,3,4,5...20
num = 1,
sum1 = 1
x = 1
x = 1: sum1 = 1
sum2 += sum1 = 1
num = 2
sum1 = 1
x = 1, 2
x = 1, sum1 = 1
x = 2, sum1 = 1*2
sum2 = 1 + 2 = 3
num = 3
sum1 = 1
x = 1,2,3
x = 1, sum1 = 1
x = 2, sum1 = 2
x = 3, sum1 = 6
sum2 = 3 + 6 = 9
num = 4
sum1 = 1
x = 1,2,3,4
x = 1, sum1 = 1
x = 2, sum1 = 2
x = 3, sum1 = 6
x = 4, sum1 = 24
sum2 = 9 + 24 = 33
num = 5
sum1 = 1
x = 1,2,3,4,5
x = 1, sum1 = 1
x = 2, sum1 = 2
x = 3, sum1 = 6
"""
5.循環(huán)輸入大于0的數(shù)字進(jìn)行累加,直到輸入的數(shù)字為0,就結(jié)束循環(huán),并最后輸出累加的結(jié)果
print('==================第五題==================')
# sum1 = 0
# while True:
# value = int(input('請(qǐng)輸入一個(gè)數(shù):'))
# if value == 0:
# break
# sum1 += value
# print(sum1)
練習(xí): 猜數(shù)字游戲
隨機(jī)產(chǎn)生一個(gè)數(shù),用戶不斷輸入數(shù)字,直到輸入的數(shù)字和產(chǎn)生的隨機(jī)數(shù)一樣,游戲就結(jié)果。
游戲過(guò)程中,根據(jù)輸入的數(shù)字做相應(yīng)的提示(大了,小了)
# random是python提供的和隨機(jī)數(shù)相關(guān)的模塊
import random
"""
random.randint(M,N) - 產(chǎn)生一個(gè)M~N的隨機(jī)整數(shù)
"""
# print('===============歡迎來(lái)到猜數(shù)字游戲=================')
# num = random.randint(0, 100)
# count = 0
# while True:
# value = int(input('請(qǐng)輸入:'))
# count += 1
# if value == num:
# print('??恭喜你猜對(duì)了!!??, 總共猜了', count, '次!')
# break
# elif value > num:
# print('??大了, 再小點(diǎn)兒')
# else:
# print('??小了,再大點(diǎn)兒')
5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤(pán)控制。
# 3, 33, 333
"""
3 = 0*10 + 3
33 = 30 + 3 = 3*10 + 3
333 = 330+3 = 33*10 + 3
3333 = 3330+3 = 333*10 + 3
規(guī)律: 當(dāng)前項(xiàng) = 前一項(xiàng)*10 + 3
"""
n = 5 # 決定總共有多少項(xiàng)
a = 2 # 每一項(xiàng)上的每一位是多少
sum1 = 0
num = 0 # 保存求和的每一項(xiàng)
for x in range(6):
num = num * 10 + a
print(num)
sum1 += num
print(sum1)
補(bǔ)充: print的定制
可以在print括號(hào)的最后通過(guò)end來(lái)設(shè)置一個(gè)print結(jié)束后的效果;還可以通過(guò)sep來(lái)設(shè)置多個(gè)數(shù)據(jù)之間的間隔
6.根據(jù)n的值的不同,輸出相應(yīng)的形狀
print('=========補(bǔ)充==========')
print('*', end=',')
print('*')
print(10, 20, sep='+++++', end=' ')
print(100)
"""
n = 5
*****
****
***
**
*
n = 4
****
***
**
*
"""
n = 7
for x in range(n, 0, -1):
# print('*' * x)
for _ in range(x):
print('*', end='')
print()
b.根據(jù)n的值的不同,輸出相應(yīng)的形狀(n為奇數(shù))
"""
n = 5
*
***
*****
1: 1星 2空 1+2*2 = 5
2: 3星 1空 3+1*2 = 5
3: 5星 0空 5+0*2 = 5
n = 7
* 1 3s 1+3*2 = 7
*** 3x 2s 3+2*2 = 7
***** 5x 1s 5+1*2 = 7
******* 7x 0s 7+0*2 = 7
規(guī)律: 每一行星個(gè)數(shù)+空格數(shù)的2倍 == n
"""
n = 11
for star in range(1, n+1, 2):
space = int((n - star) / 2)
# 打印空格
for _ in range(space):
print(' ', end='')
# 打印*
for _ in range(star):
print('*', end = '')
print()
"""
n = 5
*
***
*****
***
*
n = 7
*
***
*****
*******
*****
***
*
"""
10.這是經(jīng)典的"百馬百擔(dān)"問(wèn)題,有一百匹馬,馱一百擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩只小馬馱1擔(dān),問(wèn)有大,中,小馬各幾匹?
for small in range(2, 101, 2):
for big in range(1, 34):
for middle in range(1, 51):
if (small + big + middle == 100) and (small/2 + big*3 + middle * 2 == 100):
print('大:',big,'中:', middle, '小:', small)