習(xí)題
- 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。
n = input('請輸入你所想要相加的值:')
m = int(input('請輸入你所想要相加的遍數(shù):'))
s = 0
for x in range(1, m+1):
f = n
n = n * x
s += int(n)
n = f
print(s)
輸出結(jié)果演示:
請輸入你所想要相加的值:2
請輸入你所想要相加的遍數(shù):15
246913580246910
- 打印圖形1、2、3
image = '@'
s = int(input('請輸入你所想要打印圖形層數(shù):'))
control = input('打印半金字塔型請輸入(a);\n打印金字塔型請輸入(b);\n打印倒半金字塔型請輸入(c);\n請輸入你的選擇:')
if control == 'a' or control == 'c':
for x in range(s):
if control == 'a':
for _ in range(x + 1):
print(image, end='')
print('')
if control == 'c':
for _ in range(s - x):
print(image, end='')
print('')
if control == 'b':
for x in range(s, 0, -1):
for _ in range(x-1):
print(' ', end='')
for _ in range((s-x)*2+1 ):
print(image, end='')
print('')
b的輸出結(jié)果:
請輸入你的選擇:b
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
輸出結(jié)果:
請輸入你所想要打印圖形層數(shù):5
打印半金字塔型請輸入(a);
打印金字塔型請輸入(b);
打印倒半金字塔型請輸入(c);
請輸入你的選擇:a
@
@@
@@@
@@@@
@@@@@
請輸入你的選擇:c
@@@@@
@@@@
@@@
@@
@
金字塔(文本格式無法顯示空格)
- 輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
m = int(input('請輸入整數(shù)1:'))
n = int(input('請輸入整數(shù)2:'))
if m < n:
temp = n
n = m
m = temp
j = m
k = n
while k != 0:
temp = j % k
j = k
k = temp
print('最小公倍數(shù)為:%d;最大公因數(shù)為:%d' % (m*n/j, j))
輸出結(jié)果:
請輸入整數(shù)1:15
請輸入整數(shù)2:25
最小公倍數(shù)為:75;最大公因數(shù)為:5
- 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為 "完數(shù) "。例如6=1+2+3.編程找出1000以內(nèi)的所有完數(shù)。
list_complexenumber = []
for x in range(1, 1001):
sum = 0
for y in range(1, x):
if not x % y:
sum += y
if x == sum:
list_complexenumber.append(x)
print(list_complexenumber)
輸出結(jié)果:[6, 28, 496]
- 輸出9*9口訣
for line in range(1, 10):
for column in range(1, line+1):
print('%dx%d=%d' % (column, line, column*line), end=' ')
print('')
輸出結(jié)果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
- 一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬位相同,十位與千位相同
mun = input('請輸入一個(gè)五位整數(shù),我們將為你判斷它是不是回文數(shù):')
number = list(mun)
if number[0] == number[4] and number[1] == number[3]:
print('%s是回文數(shù)字' % (mun))
輸出結(jié)果:
請輸入一個(gè)五位整數(shù),我們將為你判斷它是不是回文數(shù):35753
35753是回文數(shù)字
- 打印圖形(菱形)
image = '@'
s = int(input('請輸入你所想要打印菱形大小:'))
for x in range(s, 1, -1):
for _ in range(x - 1):
print(' ', end='')
for _ in range((s - x) * 2 + 1):
print(image, end='')
print('')
for x in range(s):
for _ in range(x):
print(' ', end='')
for _ in range((s - x) * 2 - 1):
print(image, end='')
print('')
輸出結(jié)果:
請輸入你所想要打印菱形大?。?
@
@@@
@@@@@
@@@@@@@
@@@@@
@@@
@
- 輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。
lst = list(input('請輸入一行字符,可以是任意字符:'))
iLetter = []
iSpace = []
iNumber = []
iOther = []
for i in range(len(lst)):
if ord(lst[i]) in range(65, 91) or ord(lst[i]) in range(97, 123):
iLetter.append(lst[i])
elif lst[i] == ' ':
iSpace.append(' ')
elif ord(lst[i]) in range(48, 58):
iNumber.append(lst[i])
else:
iOther.append(lst[i])
print('英文字母個(gè)數(shù):%s' % len(iLetter))
print('空格個(gè)數(shù):%s' % len(iSpace))
print('數(shù)字個(gè)數(shù):%s' % len(iNumber))
print('其它字符個(gè)數(shù):%s' % len(iOther))
輸出結(jié)果:
請輸入一行字符,可以是任意字符:不瘋魔rsfisi34857(^&% fdr ][' f
英文字母個(gè)數(shù):10
空格個(gè)數(shù):3
數(shù)字個(gè)數(shù):5
其它字符個(gè)數(shù):11
注意:ASCII 碼表的對(duì)應(yīng)值,知道 ord('a') 能將字符 'a' 轉(zhuǎn)化為 ASCII 碼表上對(duì)應(yīng)的數(shù)值,就可以了。其中,數(shù)字 0-9 對(duì)應(yīng)的碼值為 48-57,大寫字母 A-Z 對(duì)應(yīng) 65-90,小寫字母 a-z 對(duì)應(yīng) 97-122。判斷的時(shí)候應(yīng)注意:'2' in range(3) 的結(jié)果是 False,因?yàn)?'2' 是字符,而 range(3) 包含的全是數(shù)字。 ord('2') in range(3) 的結(jié)果則是 True。
筆記
輸出函數(shù):print()
1、默認(rèn)每一個(gè)print函數(shù),輸出完內(nèi)容后會(huì)輸出一個(gè)換行
2、一個(gè)print函數(shù)輸出多個(gè)內(nèi)容的時(shí)候,內(nèi)容之間是用空格隔開的
3、內(nèi)容后邊加end=來設(shè)置結(jié)束標(biāo)志(默認(rèn)是'\n')
4、通過設(shè)置sep的值,來設(shè)置多個(gè)內(nèi)容之間的間隔符(默認(rèn)是‘’)
print('aaa', 100, end='\n', sep=',')
print('bbb')
輸入函數(shù):input()函數(shù)
1、input()函數(shù)可以接受從控制臺(tái)輸入的內(nèi)容(一回車為結(jié)束標(biāo)志)
2、input函數(shù)會(huì)阻塞線程,程序執(zhí)行到input的時(shí)候會(huì)停下來,等待用戶
的輸入,輸入完成后才會(huì)接著執(zhí)行下面的內(nèi)容
3、接受到的數(shù)據(jù)是以字符串的形式返回的
value = input('請輸入一個(gè)整數(shù):')
print(value, type(value))
# 練習(xí):猜數(shù)字游戲
"""
隨機(jī)產(chǎn)生一個(gè)1-100的整數(shù)
輸入的數(shù)字如果和產(chǎn)生的隨機(jī)數(shù)是一樣的,就提示猜測成功,并且結(jié)束游戲
如果輸入的數(shù)大于或者小于隨機(jī)數(shù),就提示輸入的數(shù)字偏大或者偏小,然后讓其重新輸入
"""
import random
number = random.randint(1, 100)
count = 0
print('=====歡迎開始猜數(shù)字游戲=====')
while True:
value1 = int(input('請輸入你所猜測的數(shù)字:'))
count += 1
if value1 == number:
if count >= 6 :
print('請充值智商')
if count == 1 :
print('大神,請收下膝蓋吧!')
print("恭喜你,猜對(duì)了!")
break
if value1 > number:
print('你所猜測的數(shù)字有點(diǎn)大哦,換個(gè)小點(diǎn)的試試!')
if value1 < number:
print('你所猜測的數(shù)字有點(diǎn)小哦,換個(gè)大點(diǎn)的試試!')
"""
else:
print('你所猜測的數(shù)字有點(diǎn)小哦,換個(gè)大點(diǎn)的試試!')
"""
# 優(yōu)化:如果確定了只有三種情況,只需要判斷兩種情況,第三種用else表示
