Python基礎語法習題

1、~12為什么是-13?
解1:12 二進制:0000 1100
補碼: 0000 1100
按位取反 :1111 0011
求這個原碼,即負數求補碼的逆過程:先減1,再取反 (符號位不變)
-1 1111 0010
取反 1111 1101 還原成十進制-13

2、10^9等于?10^-9等于?
解:(1)10^9
10的二進制:0000 1010
9的二進制: 0000 1001
異或(同為1,異為0)結果:
0000 0011 為十進制3

(2)10^-9
10的二進制補碼:0000 1010
-9的二進制為其補碼:
1000 1001
取反 1000 0110
加1 1000 0111 此即補碼
異或:0000 1001
1000 0111
結果:1000 1110 然后求其原碼
減1 :1000 1101
取反: 1000 0010 即十進制-2

3、輸入兩個數字,輸出最大數
解答: a = int(input(‘請輸入數字1:’))
b = int(input(‘請輸入數字2:’))
print(a,b)
if a>=b:
print(a)
else:
print(b)

4、給定一個不超過5位的正整數,判斷其有幾位
(使用input函數)
解:
a = int(input(‘請輸入不超過五位數的正整數:’))
print(a)
if a > 999:
if a > 9999:
print(‘位數是5’)
else:
print(‘位數是4’)
elif a > 9:
if a > 99:
print(‘位數是3’)
else:
print(‘位數是2’)
else:
print(‘位數是1’)

5、計算10以內的偶數(for循環)
解答:
(1) for i in range(0,10,2):
print(i)

(2) for i in range(10):
if i & 0b1:
continue
print(i)

6、計算1000以內的被7整除的前20個數(for循環)
解答:
count = 0
for i in range(0,1000,7):
print(i)
count += 1
if count >= 20:
break

7、給定一個不超過5位的正整數,判斷該數的位數,依次打印出個位、十位、百位、千位、萬位的數字?;蛘撸来未蛴〕鋈f位到個位的數字。
解答:
val = int(input(‘Please input a int > 0 & < 100000:>>>’))
print(val)
#查看位數
if val >= 1000:
if val >= 10000:
num = 5
else:
num = 4
else:
if val >= 100:
num = 3
elif val >= 10:
num = 2
else:
num = 1
print(num)
#打印個位、十位、百位、千位、萬位
a = 1
while a:
a = val % 10
print(a)
val //= 10
if val < 1:
break
# 另一種方法
for i in range(num):
n = val // 10
print(val – n*10)
val = n
#倒序打印
for j in range(num,0,-1):
b = val // 10**(j-1)
print(b)
val = val – b*10**(j-1)
#另一種方法
pre = 0
for j in range(num,0,-1):
c = val // 10**(j-1)
print(c – pre*10)
pre = c

8、打印一個邊長為n的正方形
解答:
n = int(input(‘Please input the length of square: ‘))
for i in range(1,n+1):
if i == 1 or i == n:
print(‘*’*n)
else:
print(‘*’+’ ‘*(n-2)+’*’)

9、求100內所有奇數的和
解答:
sum = 0
for i in range(1,100,2):
sum += i
print(sum)

10、判斷學生成績,成績等級A~E。其中,90分以上為A,80~89分為B,70~79為C,60~69為D,60分以下為E。
解答:
score = float(input(‘Please input the score: ‘))
if score >= 80:
if score >= 90:
level = ‘A’
else:
level = ‘B’
elif score >= 70:
level = ‘C’
elif score >= 60:
level = ‘D’
else:
level = ‘E’
print(level)

11、求1到5階乘之和
解答:
n = int(input())
sum = 0
for i in range(1,n+1):
a = 1
for j in range(1,i+1):
a *= j
sum += a
print(sum)

12、給一個數,判斷它是否是素數(質數:一個大于1的自然數只能被1和它本身整除)
解答:
#方法1,數n本身與2到(n-1)整除
num = int(input(‘請輸入大于1的數’))
i = int()
for i in range(2,num):
if num%i == 0:
print(‘這不是一個素數’)
break
else:
print(‘這是一個素數’)
#方法2,優化范圍(1,sqrt(n)),平方根兩邊只用檢查一遍
flag = False
for i in range(2,int(n**0.5)+1):
if n % i == 0:
print(n,’is not a prime number’)
break
else:
print(n,’is a prime number’)
#方法3,

13、打印九九乘法表
解答:
for i in range(1,10):
for j in range(1,i+1):
product = i*j
if j > 1 and j * i < 10:
product = str(product) + ‘ ‘
else:
product = str(product)
print( ‘{}*{}={}’.format(j,i,product),end=’ ‘)
print()

14、打印下圖菱形

解答: 下面代碼輸入7即可
n = int(input())
e = n // 2
for i in range(-e,e+1):
print(‘ ‘*abs(i)+”*”*(n-2*abs(i)))

15、打印100以內的斐波那契數列
解答:
print(0)
print(1)
a = 0
b = 1
while True:
c = a + b
if c > 100: break
a = b
b = c
print(c)

16、求斐波那契數列第101項
解答:
a = 0
b = 1
for i in range(2,102):
c = a + b
a = b
b = c
print(b)

17、求10萬內的所有素數
解答:
方法1:
count = 1
for x in range(3,100000,2):
if x > 10 and x // 10 == 5:
continue
for i in range(3,int(x**0.5)+1,2):
if x % i == 0:
break
else:
count +=1
print(x)

方法2:考慮下計數,引入時間
import datetime
start = datetime.datetime.now()
count = 0
sum = 0
for i in range(3,100000,2):
for j in range(3,int(i**0.5+1),2):
sum += 1
if not i % j:
break
else:
count += 1
print(count)
print(sum)
delta = (datetime.datetime.now()-start).total_seconds()
print(delta)

18、給一個半徑,求圓的面積和周長。圓周率3.14
解答:
r = int(input(‘r=’))
print(‘area=’+str(3.14*r*r))
print(‘circumference=’+str(2*3.14*r))

19、輸入兩個數字,比較大小后,從小到大升序打印
解答:
a = input(‘first: ‘)
b = input(‘second: ‘)
if a > b:
print(b,a)
else:
print(a,b)
#采用三元表達式
a = input(‘first: ‘)
b = input(‘second: ‘)
print(b,a) if a > b else print(a,b)

20、獲取最大值,請輸入若干個整數,打印出最大值
解答:
#以空輸入結束循環
n = int(input(‘Input first number:’))
while True:
m = input(‘Input second number:’)
if m:
m = int(m)
if m > n:
n = m
print(‘Max is’, n)
else:
break

21、輸入若干個數,求每次輸入后的算數平均數
解答:
n = 0
sum = 0
while True:
a = input(‘>>’)
if a == ‘quit’:
break
n +=1
sum += int(a)
print(‘arithmetic average is ‘,sum / n)

22、解決猴子吃桃問題
若干個桃子,第一天吃掉一半零一個,每天如此,第10天只剩1個,問總共有多少桃子?
解答:
n = 1
for i in range(2,11):
b = 2 * (n + 1)
n = b
print(n)
print(‘———————-‘)
n = 1534
for i in range(2,11):
b = n/2 – 1
n = b
print(int(n))

23、使用右對齊打印九九乘法表

解答:
for i in range(1,10):
s = ”
for j in range(i,10):
s += ‘{}*{}={:<{}} ‘.format(i,j,i*j,2 if j < 4 else 3)
print(‘{:>70}’.format(s))

24、打印對頂三角形

解答:
n = int(input(‘Input the number:’))
e = n // 2
for i in range(-e,e+1):
print(‘ ‘*(e-abs(i))+’*’*(2*abs(i)+1))

25、打印閃電

解答:
n = 7
for i in range(-3,4):
if i < 0:
print(“{:>4}”.format(‘*’*(4+i)))
elif i == 0:
print(‘*’*7)
else:
print(” ” * 3 + “*” *(4-i))

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92858

(1)
JacoJaco
上一篇 2018-03-24 17:56
下一篇 2018-03-25 10:16

相關推薦

  • 馬哥linux運維網絡班第22期-第一周博客作業

    計算機的組成及其功能 計算機由運算器,控制器,存儲器,輸入裝置和輸出裝置組成 (1)運算器 對數據進行常規運算(+,-,*,/)和邏輯運算(與,或,非等)及比較位移等操作 (2)控制器 分析從存儲器中讀出的指令并按預先規定的步奏執行操作 (3)存儲器 存儲程序和數據信息并實現快速存取 (4)輸入設備 把各種類型的信息轉換為二進制編碼輸入進計算機存儲起來 (5…

    Linux干貨 2016-08-14
  • Nginx/httpd 代理兩個Tomcat

    Nginx 前端代理服務器172.16.71.1 從ftp下載Nginx 安裝 vim /etc/nginx/nginx.confhttp {…# 添加以下內容upstream tcsrvs {         server 172.16.71.4:8080;        …

    Linux干貨 2017-02-12
  • LVM邏輯卷的縮減與刪除,LVM邏輯卷快照,btrfs文件系統,網絡管理

    邏輯卷縮減 縮減的時候要注意縮減的空間不要超過文件系統的空間,不然縮減的時候會損壞文件系統。 第一步要先取消掛載(必須) 第二部檢查文件完整性(必須) e2fsck -f /dev/vg0/lv0 第三部文件系統縮減,先縮減文件系統. resize2fs /dev/vg0/lv0 10G  (縮減到剩下10G) 第四步邏輯卷組的縮減 lvreduc…

    Linux干貨 2016-09-06
  • 馬哥教育網絡班20期第2周課程練習

    答: 1、 cp,mv,rm,cat(tac,more,less,tail),touch 其中常用的有: cp(復制):                   -i:交互式              -…

    Linux干貨 2016-06-23
  • nginx狀態監控

    通過查看Nginx的并發連接,我們可以更清除的知道網站的負載情況。Nginx并發查看有兩種方法(之所以這么說,是因為筆者只知道兩種),一種是通過web界面,一種是通過命令,web查看要比命令查看顯示的結果精確一些。下面介紹這兩種查看方法 No1、通過瀏覽器查看 通過web界面查看時Nginx需要開啟status模塊,也就是安裝Nginx時加上 &n…

    Linux干貨 2016-10-19
  • PHP高效率寫法(詳解原因)

    1.盡量靜態化:    如果一個方法能被靜態,那就聲明它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。   當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。   其實靜態方法和非靜態方法的效率主要區別在內存:靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,所以靜…

    Linux干貨 2015-05-28
欧美性久久久久