1. 程式人生 > >Python 習題練習

Python 習題練習

習題1: 輸出2000-2200之間的所有閏年

*使用while迴圈

year = 2000
while year <= 2200:
    if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0) :
        print('%d' %year ,end ='\t')

    year += 1

*使用for  in迴圈

for year in range(2000,2201):
     if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):

            print( year , end = '\t')

 習題2:輸入三個數,判斷是否能構成三角形,如果能,求其面積和周長

a = float(input('請輸入三角形的邊長a:'))
b = float(input('請輸入三角形的邊長b:'))
c = float(input('請輸入三角形的邊長c:'))
if (a + b)> c and (a + c) > b and (b + c)> a:  
    perimeter = a + b + c
    p = perimeter/2
    area = math.sqrt(p * (p - a) * (p - b) * (p - c))
    print('三角形的周長為:%.2f' %perimeter)
    print('三角形的面積為:%.2f' %area)
else:
    print('a,b,c三個數不能構成三角形')

習題3:輸出100-999之間的水仙花數


*使用while迴圈

import math

num = 100
while num <= 999:
    unit = num % 10
    ten = num % 100 // 10
    hundred = num // 100
    if num == math.pow(unit,3) + math.pow(ten,3) + math.pow(hundred,3):
        print('%d '%num)

    num = num +1

*使用for  in迴圈

import math

for num in range(100 , 1000):
    unit = num % 10
    ten = num % 100 // 10
    hundred = num // 100
    if num == math.pow(unit,3) + math.pow(ten,3) + math.pow(hundred,3):

        print('%d '%num)

習題4:計算1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + ...... + 1/99 - 1/100

*使用while迴圈

num = 1
sum_num = 0
sign = 1
while num <= 100:
    factor = sign / number
    sum_num = sum_num + factor
    num += 1
    sign = - sign

print('%.5f ' %sum_num)

*使用for  in迴圈

sum_num = 0
sign = 1
for number in range(1,101):
    factor = sign / number
    sign = - sign
    sum_num += factor
print('%.5f' %sum_num)

習題5:人機猜拳,人和機器分別1000元錢,通過下注贏錢,當誰的錢輸光,遊戲停止

from random import randint


machine_money = 1000
person_money = 1000
counter = 0
while True:
    machine = randint(1,3)
    person = randint(1,3)
    ante = int(input('請輸入賭注:'))
    print(person)
    print(machine)
    counter += 1
    if machine > person:
        person_money = person_money - ante
        machine_money = machine_money + ante
    elif machine < person:
        person_money = person_money + ante
        machine_money = machine_money - ante
    else:
        person_money = person_money
        machine_money = machine_money
        print('平局,再來一次!')
    print('我的餘額為:%d,電腦的餘額為:%d' %(person_money,machine_money))
    if person_money == 0 or machine_money == 0:
        print('我的餘額是%d ,電腦的餘額是%d ' %(person_money,machine_money))
        print('勝負已定!')
        break

print('人機大戰最終經過%d個回合分出勝負' %counter)

習題6:丟6000次骰子,統計它們出現的次數

from random import randint 


f1 = f2 = f3 = f4 = f5 = f6 = 0
for x in range (6000):
    num = randint(1,6)
    if num == 1:
        f1 += 1
    elif num == 2:
        f2 += 1
    elif num == 3:
        f3 += 1
    elif num == 4:
        f4 += 1
    elif num == 5:
        f5 += 1
    else:
        f6 += 1
print('1總共出現%d 次' %f1)
print('2總共出現%d 次' %f2)
print('3總共出現%d 次' %f3)
print('4總共出現%d 次' %f4)
print('5總共出現%d 次' %f5)

print('6總共出現%d 次' %f6)

習題7:輸入一個數,判斷該數是不是素數

import math


number = int(input('請輸入一個不小於2的整數:'))
num = 2
kqrt = math.sqrt(number)
while num < kqrt:
    if number % num == 0:
        break
    else:
        num +=1
if num <= kqrt:
    print('%d is not a prime' %number)
else:

    print('%d is a prime' %number)

習題8:輸出200-300之間的素數

import math

for num in range(200 , 301):
    root = math.sqrt(num)
    deno = 2
    while deno <= root:
        if num % deno == 0:
            break
        deno += 1
    if deno > root:

        print(num,end = '  ')

習題9:輸入2個正整數,求出這兩個數的的最大公約數以及最小公倍數

num1 = int(input('num1 = '))
num2 = int(input('num2 = '))
min_num = min(num1 , num2)
for factor in range( min_num , 0 , -1 ):
    if (num1 % factor == 0) and ( num2 % factor == 0):
        print('最大公約數是%d' %factor)
        print('最小公倍數是%d' %((num1 * num2) / factor))

        break

習題10:現在有100元錢買雞,公雞5元/只,母雞3元/只,小雞1元3只,100元買100只雞, 問公雞/母雞/小雞各多少?

for x in range(21):
    for y in range(34):
        z =100 - x - y 
        if(z % 3 ==0) and (5*x + 3*y + z/3 ==100):
                print(x,y,z)

習題11:找出10000以內的完美數

for number in range(1,10001):
    total = 0
    for num in range(number,1,-1):
        if number % num  == 0:
            factor = number / num
            total += factor
    if number == total:
        print(number,end = '\t')

習題12:A、B、C、D、E五個人在某天夜裡合夥去捕魚,到第二天凌晨時都疲憊不堪,於是各自找地方睡覺。日上三杆,A第一個醒來,他將魚分為五份,把多餘的一條魚扔掉,拿走自己的一份。B第二個醒來,也將魚分為五份,把多餘的一條魚扔掉,保持走自己的一份。C、D、E依次醒來,也按同樣的方法拿走魚。問他們合夥至少捕了多少條魚?

counter = 1
while True:
    count = counter
    for _ in range(4):
        num = (count - 1) * 4 / 5
        count = num
    if (count - 1) % 5 == 0:
        print(counter)
        break
    else:
        counter += 1

fish = 1
while True:
    total = fish
    for num in range(6):
        if (total - 1) % 5 == 0:
            total = (total - 1) // 5 * 4
        else:
            break
    if num == 5:
        print(fish)
        break
    fish += 1

習題13:一個簡單的賭博遊戲,遊戲規則如下:玩家擲兩個骰子,點數為1到6,如果第一次點數和為7或11,則玩家勝, 如果點數和為2、3或12,則玩家輸,如果和 為其它點數,則記錄第一次的點數和,然後繼續擲骰,直至點數 和等於第一次擲出的點數和,則玩家勝,如果在這之前擲出了點數和為7,則玩家輸。

from random import randint


num1 = randint(1, 6)
num2 = randint(1, 6)
total = num1 + num2
print('第一個骰子的點數是%d' % num1)
print('第二個骰子的點數是%d' % num2)
if (total == 7) or (total == 11):
    print('第一次丟出的骰子之和為7或11,玩家贏 , good luck !')
elif (total == 2) or (total == 3) or (total == 12):
    print('第一次丟出的骰子之和為2或3或12,莊家贏 , game over !')
else :
    temporary = total
    print('2個骰子之和為:%d' %temporary)
    count = 2
    while True:
        count = count 
        num1 = randint(1, 6)
        num2 = randint(1, 6)
        total = num1 + num2
        print()
        if temporary == total:
            print('count = %d' %count)
            print('第一個骰子的點數是%d' % num1)
            print('第二個骰子的點數是%d' % num2)
            print('玩家贏, good luck !')
            break
        elif total == 7:
            print('count = %d' % count)
            print('第一個骰子的點數是%d' % num1)
            print('第二個骰子的點數是%d' % num2)
            print('莊家贏 , game over !')
            break
        else:
            print('第一個骰子的點數是%d' % num1)
            print('第二個骰子的點數是%d' % num2)
            print('平局,繼續!')
            count += 1

習題14:編寫程式,使用者輸入一個三位以上的整數,輸出其前2位的數字。例如使用者輸入1234,則程式輸出12。

from math import pow
number = int(input('請輸入一個三位以上的整數:'))
digit = 2
while True:
    digit += 1
    if pow( 10 , digit) <= number < pow( 10 , digit + 1 ):
        print('使用者輸入的是一個%d位數' %( digit + 1 ))
        break
    fact = (number // pow(10,(digit)))
print('%d'%fact)

相關推薦

Python 習題練習

習題1: 輸出2000-2200之間的所有閏年*使用while迴圈year = 2000while year <= 2200:    if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0) :   

python基礎習題練習

python基礎習題練習#encoding:utf-8 #1.實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗! name=input('name>>: ').strip() password=input('passwd&

笨辦法學python 習題42 加分練習

art 學python pup row die 另一個 ddd you true 3、創建一個新版本,裏邊使用兩個 class,其中一個是 Map ,另一個是 Engine 。提示: 把 play 放到 Engine 裏面。、 #coding=utf-8from sys i

基礎篇-python迴圈語句for,while習題練習

今天習題: 習題一: 1 用while語句的2種方法輸出數字:1到10 (1) x = 1 while x <= 10:     print(x)     x += 1 (2) word = [1,2,3,4,5,6,7,8,9,10]

Python練習更改版(更改一部分代碼,與錯誤)

print items isdigit 對不起 pro 轉換成 efault adl confirm 之前上傳的發現有部分代碼錯誤,重新上傳; 更改了第一次的代碼與錯誤,增加了註釋與商店部分功能; 沒有每天堅持更新博客,與初衷相差甚遠,堅持!每天進步一點點!

python 習題

style range 三位數 usr 程序 條件 滿足 log clas 題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少? 程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。 #

python練習--屬性

class 開頭 類方法 文字 沒有 __init__ 計算 div 技術分享 箭頭這個作業: 1 class Box:#定義一個類名為Box,類名後不必有括號,類包含類屬性和類方法,這個類沒有定義類屬性 2 ‘‘‘這是一個計算體積的類‘‘‘#這是這個類

python基礎練習-循環

成功 pan mil tro 1-1 使用 循環 font 練習 1、使用while循環輸出1 2 3 4 5 6 8 9 10 2、求1-100的所有數的和 3、輸出 1-100 內的所有奇數 或者 4、輸出 1-100 內的所有偶數 或者 5、求

python習題

子列 後退 刪除列 git 添加 break 移除 spl div #習題1 #a:實現用戶輸入用戶名和密碼,當用戶名為seven且密碼為123時,顯示登錄成功,否則登錄失敗! while 1: name = input(‘請輸入用戶名: ‘) psw =

python練習

spa 微信 logs draw .com odin height hub git 題目內容: 將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數字,類似於微信未讀信息數量那種提示效果。 類似於圖中效果 #!usr/bin/env python #_*_coding:

python練習

判斷 [0 數字 for 任務 麻煩 保存 開車 完成 一個環形的公路上有n個加油站,編號為0,1,2,...n-1, 每個加油站加油都有一個上限,保存在列表limit中,即limit[i]為第i個加油站加油的上限, 而從第i個加油站開車開到第(i+1)%n個加油站需要co

python練習實例)

ror tin 完全平方數 請問 mov utf pytho pro style Python 練習實例1 題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少? 我的代碼:python 3+ #2017-7-20 list_h = [1

python爬蟲練習1:豆瓣電影TOP250

import ria fff python top font beautiful code pen 項目1:實現豆瓣電影TOP250標題爬取: 1 from urllib.request import urlopen 2 from bs4 import Beaut

Python練習(1)

duyuheng python 比較價錢 找出一個月中的天數 計算三角的周長 點在矩形內嗎?金融方面:比較價錢假設你購買大米時發現它有兩種包裝。你會別寫一個程序比較這兩種包裝的價錢。程序提示用戶輸入每種包裝的重量和價錢,然後顯示價錢更好的那種包裝。下面是個示例運行#!/usr/bin/env pytho

python練習 10

oot 每次 += ret 字母 val pre 字母表 bsp 給你一個十進制數a,將它轉換成b進制數,如果b>10,用大寫字母表示(10用A表示,等等) a為32位整數,2 <= b <= 16 如a=3,b = 2, 則輸出11 AC: dic

Python字典練習

彈出 函數 remove python3 mov text 4.3 san 說明符 #字典:通過名字引用值得數據結構 鍵/值from copy import deepcopy##################################################

python練習 11

lis 取出 pre 練習 全部 例如 col sort 自己 桌子上有一堆數量不超過20的果子,每個果子的重量都是不超過20的正整數,全部記錄在列表 L 裏面。小明和小紅決定平分它們,但是由於他們都太自私,沒有人願意對方比自己分得的總重量更多。而果子又不能切開,所以最後他

Python基礎練習

一個數 面積 ase oat 一行 pytho python基礎 一行代碼 計算 簡單輸入輸出交互 input(‘please input your name:‘)please input your name:xx‘xx‘>>> name=‘aa‘>

二、Python基礎練習

python color 一個 計算 一行 size 圓的面積 基礎 div 1.簡單輸入輸出交互。 age=input(‘請輸入年齡:‘) print(‘Wow,%s.‘%age) 2.用戶輸入兩個數字,計算並輸出兩個數字之和:(嘗試只用一行代碼實現這個功能) #接

python練習

海倫公式 input 交互式 int 計算 radius rtl 同學 交互 1.Hello World! print(‘Hello World!‘) 2.簡單交互(交互式,文件式)教材P19 name = input("輸入名字:") print("{}同學,學好