1. 程式人生 > >collatz number,迴文數,love,map函式,漢若塔,佛祖鎮樓,read a word by random in 5s,the star of sand glass

collatz number,迴文數,love,map函式,漢若塔,佛祖鎮樓,read a word by random in 5s,the star of sand glass

1 collatz number

def collatz(num):
	'''collatz number '''
    if num % 2 == 0:
        n = num / 2
        return n
    elif num % 2 == 1:
        n = 3 * num + 1
        return n

# print(collatz(100))
# print(collatz(50))
# print(collatz(25))
num = int(input('請輸入一個整數:'))
while True:
    if num == 1:
        print(1)
        break
    else:
        num = collatz(num)
        print(num)

2 is_palindrome迴文數

def is_palindrome(n):
    n = str(n)
    m = n[::-1]
    return n == m     # 迴文格式
output = filter(is_palindrome, range(1, 1000))  # 回數
print(list(output))

3 love

print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))

4 map函式

def f(x):
    return x*x

w = map(f,[i for i in range(10)])
print(list(w))

5 漢若塔

'''
請編寫 move(n, a, b, c)函式,它接收引數 n,表示 3 個柱子 A、 B、 C
中第 1 個柱子 A 的盤子數量,然後打印出把所有盤子從 A 藉助 B 移動
到 C 的方法,例如:
def move(n, a, b, c):
----
pass
----
# 期待輸出:
# A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C
move(3, 'A', 'B', 'C')
'''


def move(n, a, b, c):    # 漢諾塔的移動
    if n == 1:
        print('move:', a, '--->', c)  # 1個直接從a移到c
    else:
        move(n-1, a, c, b)   # 分成2份,上面一份先從a移到b
        move(1, a, b, c)     # 剩下1個從a移到c
        move(n-1, b, a, c)   # 上面一份從b移到c
move(5, 'A', 'B', 'C')


def f(x):
    while x == 1:
        return 1           # 一個時,返回一次
    return 2 * f(x-1) + 1  # 這是推導公式
print('一共移動了%s次' % f(5))

6 佛祖鎮樓

print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖鎮樓                  BUG辟易  ")
print("          佛曰:  ")
print("                  寫字樓裡寫字間,寫字間里程序員;  ")
print("                  程式人員寫程式,又拿程式換酒錢。  ")
print("                  酒醒只在網上坐,酒醉還來網下眠;  ")
print("                  酒醉酒醒日復日,網上網下年復年。  ")
print("                  但願老死電腦間,不願鞠躬老闆前;  ")
print("                  賓士寶馬貴者趣,公交自行程式設計師。  ")
print("                  別人笑我忒瘋癲,我笑自己命太賤;  ")
print("                  不見滿街漂亮妹,哪個歸得程式設計師?")

7 read a word by random in 5s

import random
import time
f = open('1500.txt', 'r')
list1 = f.readlines()
# print(list1)
lines = len(list1)
# print(lines)
while True:
    print(list1[random.randint(0, 1697)])
    time.sleep(5)

8 the star of sand glass

'''
本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印

*****
 ***
  *
 ***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。

給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉儘可能多的符號。

輸入格式:

輸入在一行給出1個正整數N(<=1000)和一個符號,中間以空格分隔。

輸出格式:

首先打印出由給定符號組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符號數。

輸入樣例:
19 *
輸出樣例:
*****
 ***
  *
 ***
*****
2


t = input('請輸入:')
n = int(t.split()[0])
m = t.split()[1]
print(n)
print(m)
'''