練習_1
練習題目:
1 給定一個不超過5位的正整數,判斷其有幾位
使用input函數
2 打印1-10,正反序
3 計算10以內的偶數(奇數)
4 給定一個不超過5位的正整數,判斷其有幾位,依次打印出個位,百位,千位,萬位的數字(逆序呢)
5 打印一個邊長爲n的正方形
6 求100內所有奇數的和(2500)
7 判斷學生成績,成績等級A-E,其中,90分以上爲’A’,80-89分爲’B’,70-79分爲’C’,60-69分爲’D’,60分以下爲’E’
8 求1到5階乘之和
9 給一個數,判斷它是否是素數(質數)
質數: 一個大於1的自然數只能被1和它本身整除
1 給定一個不超過5位的正整數,判斷其有幾位
使用input函數number=int(input()) #定義整數number if number>=100: #判斷number是否大於100(二分法) if number>=10000: print('it is five-digit number') elif number>=1000: print('it is four-digit number') else: print('it is three-digit number') else: if number>=10: print('it is two-digit number') elif number>=0: print('it is unidigit') # 2 i=int(input('>>>')) count=1 while True: count+=1 i=i//10 # 將個位去除之後的數賦值給自身,例: i=55//10=5 if i//10==0: # 當去除到數字首位時,i爲個位,便如: 5//10=0 break print(count)
2 打印1-10,正反序
#正: # 1 for i in range(10): print(i+1) # 2 for i in range(1,11): print(i) # 3 i=1 while True: print(i) i+=1 if i==11: break
#反: # 1 for i in range(10,0,-1): print(i) # 2 for i in range(1,11): print(11-i) # 3 i=10 while True: print(i) i-=1 if i==0: break
3 計算10以內的偶數(奇數)
偶數:
#1 for i in range(0,11,2): print(i) #2 for i in range(11): if i%2==0: print(i) #3 for i in range(11): if i%2!=0: continue else: print(i)
奇數:
#1 for i in range(1,11,2): print(i) #2 for i in range(11): if i%2!=0: print(i) #3 for i in range(11): if i%2==0: continue else: print(i)
- 4 給定一個不超過5位的正整數,判斷其有幾位,依次打印出個位,百位,千位,萬位的數字(逆序)
#正序: number=1234 #定義整數number if number>=100: #判斷整數位數 if number>=10000: digit=5 #位數賦值給digit elif number>=1000: digit=4 else: digit=3 else: if number>=10: digit=2 elif number>=0: digit=1 print("digit is : "digit) pre_old=number #number賦值給pre_old while digit: unidigit=pre_old%10 #求得個位數的值 pre_new=pre_old//10 #求得除個位以外其它數的值 pre_old=pre_new print(unidigit) #打印個位數的值 digit-=1
#逆序: # 1 number=1234 if number>=100: if number>=10000: digit=5 elif number>=1000: digit=4 else: digit=3 else: if number>=10: digit=2 elif number>=0: digit=1 print("digit is : "digit) while digit: midnum=number//10**(digit-1) unidigit=midnum%10 digit-=1 print(unidigit) # 2 i=int(input('>>>')) count=1 num=i # 保留一份輸入的值,防止計算位數將此變量修改 while True: count+=1 i=i//10 if i//10==0: break while count: tmp=num//(10**(count-1)) unidigit=tmp%10 count-=1 print(unidigit)
#簡化正序: pre_old=2234 digit=0 while True: digit+=1 # if之前加1 if pre_old%10==pre_old: # 當求得的值除以10爲自身時,表示pre_old爲個位數了,即此數的首位 print(pre_old) break unidigit=pre_old%10 pre_new=pre_old//10 pre_old=pre_new print(unidigit) else: print("digit is : "digit)
- 5 打印一個邊長爲n的正方形
# 邊長爲5: for i in range(1,6): if i==1 or i==5: print('*'*5) # 上下邊 else: print('*'+' '*(5-2)+'*') # 5-2爲中間的空白部分 # 邊長爲n: for i in range(1,n+1): print('*'*n) if (i==1 or i==n) else print('*'+' '*(n-2)+'*')
- 6 求100內所有奇數的和(2500)
# 1 sum=0 for i in range(1,101,2): sum+=i else: print(sum) # 2 num=1 sum=0 while num<100: sum+=num num+=2 else: print(sum)
- 7 判斷學生成績,成績等級A-E,其中,90分以上爲’A’,80-89分爲’B’,70-79分爲’C’,60-69分爲’D’,60分以下爲’E’
score=77 if score>=70: if score>=90: print('A') elif score>=80: print('B') else: print('C') else: print(D) if score>=60 else print(E)
- 8 求1到5階乘之和
#1 sum=0 for n in range(5,0,-1): # 此循環提供需要哪些階乘,並將其累加 product=1 for i in range(1,n+1): # 此循環用於生成階乘的結果 product*=i sum+=product print(sum)
#2 sum=0 multiplier=1 for i in range(1,6): multiplier*=i # 求單個階乘 sum+=multiplier # 將求得的階乘累加 else: print(sum)
- 9 給一個數,判斷它是否是素數(質數)
質數: 一個大於1的自然數只能被1和它本身整除
# 1 number=15 if number==0 or number==1: print('not prime') if number==2: print('is prime') for i in range(3,number): # 3到此數的前一位數 if number%i==0: # 如果number被從3到自己的前一位數整除,則不是質數 print('not prime') break else: print('is prime') # 2 num=2 for i in range(2,int(num**0.5)+1): if num%i==0: print('not prime') break else: print('is prime')