天天看點

Python 100——Day 5

練習經典的例子

  1. 尋找水仙花數(3位)
  2. 正整數的反轉
  3. 百錢百雞問題
  4. CRAPS賭博遊戲
  5. 斐波那契數列(Fibonacci sequence)前20個
  6. 尋找完美數(10000以内)
  7. 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=' ')