練習經典的例子
- 尋找水仙花數(3位)
- 正整數的反轉
- 百錢百雞問題
- CRAPS賭博遊戲
- 斐波那契數列(Fibonacci sequence)前20個
- 尋找完美數(10000以内)
- 100内的素數
#三位數的水仙花數
#每個位數上的立方加起來等于這個數
for number in range(100,1000):
first = number//100
sec = number//10%10
third = number%10
#print(number,first,sec,third)
sum = first**3+sec**3+third**3
if sum == number:
print('%d and %d' % (sum, number))
#1000内的正整數反轉輸出
a = int(input())
if a < 10:
print(a)
elif a < 100:
print('%d%d' % (a%10, a//10))
elif a < 1000:
print('%d%d%d' % (a%10, a//10%10, a//100))
#正整數反轉輸出
num = int(input())
temp = num
new_num = 0
while temp>0:
new_num = new_num*10 + temp%10
temp //= 10
print(new_num)
#百元百雞問題
for x in range(1,21):
for y in range(1,35):
z = 100-x-y
if 5*x+3*y+z/3 == 100:
print(x,y,z)
#CRAPS賭博遊戲
#CRAPS又稱花旗骰,是美國拉斯維加斯非常受歡迎的一種的桌上賭博遊戲。
#該遊戲使用兩粒骰子,
#玩家通過搖兩粒骰子獲得點數進行遊戲。
#簡單的規則是:玩家第一次搖骰子如果搖出了7點或11點,玩家勝;
#玩家第一次如果搖出2點、3點或12點,莊家勝;
#其他點數玩家繼續搖骰子,如果玩家搖出了7點,莊家勝;
#如果玩家搖出了第一次搖的點數,玩家勝;
#其他點數,玩家繼續要骰子,直到分出勝負
from random import randint
import time
money = 1000
while money > 0:
print('你的總資産為:', money)
needs_go_on = False
while True:
debt = int(input('請下注: '))
if 0 < debt <= money:
break
first = randint(1, 6) + randint(1, 6)
time.sleep(1)
print('玩家搖出了%d點' % first)
if first == 7 or first == 11:
print('玩家勝!')
money += debt
elif first == 2 or first == 3 or first == 12:
print('莊家勝!')
money -= debt
else:
needs_go_on = True
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
time.sleep(1)
print('玩家搖出了%d點' % current)
if current == 7:
print('莊家勝')
money -= debt
elif current == first:
print('玩家勝')
money += debt
else:
needs_go_on = True
print('你破産了, 遊戲結束!')
#Fibonacci sequence
#斐波那契數列,前20個
#第一種方法
def fibonacci(a, b):
return (a+b)
x = 1
y = 1
for i in range(11):
print('%d\t%d' % (x, y), end = '\t')
x = fibonacci(x, y)
y = fibonacci(x, y)
#第二種方法
a = 0
b = 1
for _ in range(20):
a,b = b,a+b
print(a, end=' ')
#列舉10000内的完美數
#真因子求和
def sum_factor(n):
total = 0
for i in range(1,n):
if n % i == 0:
total += i
return total
sum = 0
for number in range(1,10000):
sum = sum_factor(number)
if sum == number:
print(number)
#列舉100以内的素數
#判斷素數隻需用判斷到平方根
import math
for num in range(2, 100):
is_prime = True
for factor in range(2, int(math.sqrt(num) + 1)):
if num % factor == 0:
is_prime = False
if is_prime:
print(num, end=' ')