[Python] 找兩個正整數的最大公因數及最小公倍數

公因數:

x = int(input("please input a number:"))
y = int(input("please input a number:"))
if x > y :
    c = x
else:
    c = y
for k in range(2, c):
    if x % k == 0 and y % k == 0:
        print(k)

結果:

please input a number:10
please input a number:20
2
5
10

最大公因數:

x = int(input("please input a number:"))
y = int(input("please input a number:"))
if x > y :
    c = x
else:
    c = y
for k in range(c, 2, -1):
    if x % k == 0 and y % k == 0:
        print(k)
        break

結果:

please input a number:10
please input a number:20
10

最小公倍數:

x = int(input("please input a number:"))
y = int(input("please input a number:"))
if x > y :
    c = x
else:
    c = y
m = (x + 1) * (y + 1)
for k in range(c, m):
    if k % x == 0 and k % y == 0:
        print(k)
        break

結果:

please input a number:10
please input a number:20
20

[Python] 利用for迴圈印出九九乘法表

方式一:1-9直排,1印完換2,每印完一個數字換一行。
程式碼:

for i in range(1, 10):
    for j in range(1, 10):
        print("%d * %d = %d" % (i, j, i*j))
    print()

結果:

1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45

6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54

7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63

8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72

9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81

方式二:1-9橫列全部印出,印出乘法結果後,中間空一格區分,為了顯示好看,所以列印時,讓結果(=之後)都要顯示2位數(%02d)。
程式碼:

for i in range(1, 10):
    for j in range(1, 10):
        print("%d * %d = %02d" % (j, i, i*j), end = (" "))
    print()

結果:

1 * 1 = 01 2 * 1 = 02 3 * 1 = 03 4 * 1 = 04 5 * 1 = 05 6 * 1 = 06 7 * 1 = 07 8 * 1 = 08 9 * 1 = 09 
1 * 2 = 02 2 * 2 = 04 3 * 2 = 06 4 * 2 = 08 5 * 2 = 10 6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18 
1 * 3 = 03 2 * 3 = 06 3 * 3 = 09 4 * 3 = 12 5 * 3 = 15 6 * 3 = 18 7 * 3 = 21 8 * 3 = 24 9 * 3 = 27 
1 * 4 = 04 2 * 4 = 08 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20 6 * 4 = 24 7 * 4 = 28 8 * 4 = 32 9 * 4 = 36 
1 * 5 = 05 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 6 * 5 = 30 7 * 5 = 35 8 * 5 = 40 9 * 5 = 45 
1 * 6 = 06 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54 
1 * 7 = 07 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 
1 * 8 = 08 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72 
1 * 9 = 09 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 

方式三:三組為一個區塊(1-3一個區塊,4-6一個區塊,7-9一個區塊),印出乘法結果後,中間空一格區分,為了顯示好看,所以列印時,讓結果(=之後)都要顯示2位數(%02d)。
程式碼:

for k in range(0, 3):
    for i in range(1, 10):
        for j in range(3 * k + 1, 3 * k + 4):
            print("%d * %d = %02d " % (j, i, i*j), end = (" "))
        print()
    print()

結果:

1 * 1 = 01  2 * 1 = 02  3 * 1 = 03  
1 * 2 = 02  2 * 2 = 04  3 * 2 = 06  
1 * 3 = 03  2 * 3 = 06  3 * 3 = 09  
1 * 4 = 04  2 * 4 = 08  3 * 4 = 12  
1 * 5 = 05  2 * 5 = 10  3 * 5 = 15  
1 * 6 = 06  2 * 6 = 12  3 * 6 = 18  
1 * 7 = 07  2 * 7 = 14  3 * 7 = 21  
1 * 8 = 08  2 * 8 = 16  3 * 8 = 24  
1 * 9 = 09  2 * 9 = 18  3 * 9 = 27  

4 * 1 = 04  5 * 1 = 05  6 * 1 = 06  
4 * 2 = 08  5 * 2 = 10  6 * 2 = 12  
4 * 3 = 12  5 * 3 = 15  6 * 3 = 18  
4 * 4 = 16  5 * 4 = 20  6 * 4 = 24  
4 * 5 = 20  5 * 5 = 25  6 * 5 = 30  
4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  
4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  
4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  
4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  

7 * 1 = 07  8 * 1 = 08  9 * 1 = 09  
7 * 2 = 14  8 * 2 = 16  9 * 2 = 18  
7 * 3 = 21  8 * 3 = 24  9 * 3 = 27  
7 * 4 = 28  8 * 4 = 32  9 * 4 = 36  
7 * 5 = 35  8 * 5 = 40  9 * 5 = 45  
7 * 6 = 42  8 * 6 = 48  9 * 6 = 54  
7 * 7 = 49  8 * 7 = 56  9 * 7 = 63  
7 * 8 = 56  8 * 8 = 64  9 * 8 = 72  
7 * 9 = 63  8 * 9 = 72  9 * 9 = 81  

[Python] 利用for迴圈印出數字三角形

最近又回到學習 python 了,紀錄一下練習的部分。

利用 for 迴圈印出數字三角形,使用者輸入一個正整數之後,程式印出由 1 到該數字的三角形數字列。

程式碼:

n = int(input("input a number:"))
for i in range(1, n + 1):
    for j in range(1, i + 1):
        print(j, end=(""))
    print()

結果:

input a number:7
1
12
123
1234
12345
123456
1234567

[Arduino] Arduino與Python通訊(三)Arduino傳送資料給Python

  • 使用 python 程式透過通訊埠(COM PORT)接收 arduino 的資料 ,並顯示在電腦中。
  • arduino 接線
aduino 可變電阻
A0 中間腳位
VCC VCC
GND GND
  • arduino 程式
void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  int vr = analogRead(A0);
  Serial.println(vr);
}
  • python 程式:python沒有陣列(array)的型態,所以只能用list。
import serial

COM_PORT = 'COM4'  # 根據連結的Arduino的通訊埠修改設定
BAUD_RATES = 9600
arduinoSerial = serial.Serial(COM_PORT, BAUD_RATES)

try:
    buffer = list()
    
    while True:
        while arduinoSerial.in_waiting:
            data_raw = arduinoSerial.read()
            buffer.append(data_raw)

            if data_raw == b'\n':
                print('收到的資料:', buffer)
                buffer.clear()

except KeyboardInterrupt:
    arduinoSerial.close()    # 清除序列通訊物件
    print('關閉程式')

 

[Arduino] Arduino與Python通訊(二)使用Python點亮Arduino上的LED

  • 使用 python 程式透過通訊埠(COM PORT)傳輸指令給 arduino  ,來控制 LED 燈的開關(亮暗)。
  • python程式
import serial

COM_PORT = 'COM4'  # 根據連結的Arduino的通訊埠修改設定
BAUD_RATES = 9600
arduinoSerial = serial.Serial(COM_PORT, BAUD_RATES)

try:
    while True:
        choice = input('1:開燈 0:關燈 9:關閉程式  ')
        if choice == '1':
            print('開燈')
            arduinoSerial.write(b'1')
        elif choice == '0':
            print('關燈')
            arduinoSerial.write(b'0')
        elif choice == '9':
            print('關閉程式')
            arduinoSerial.close()
            exit()
        else:
            print('指令錯誤')

except KeyboardInterrupt:
    arduinoSerial.close()    # 清除序列通訊物件
    print('關閉程式')
  • arduino 接線
arduino LED
D10 正(長腳)
GND 負(短腳)
  • arduino程式
char serialData;
int LedPin = 10;

void setup() 
{
  pinMode(LedPin, OUTPUT);  
  Serial.begin(9600);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    serialData = Serial.read();
    Serial.print(serialData);

    if(serialData == '1')
      digitalWrite(LedPin, HIGH);
    else if(serialData == '0')
      digitalWrite(LedPin, LOW);
  }
}

 

[Arduino] Arduino與Python通訊(一)安裝prserial

透過通訊埠(COM PORT)串聯 arduino 與 python。

點選下載

  • 選擇壓縮檔(.tar.gz)下載。

選擇壓縮檔下載

  • 下載到電腦後,解壓縮,進入解壓縮後的目錄,並執行安裝「python setup.py install」,開啟命令提示時,請使用「管理員權限」,不然可能會導致安裝失敗。

安裝pyserial

  • 安裝完成後,會顯示「Finished processing dependencies for pyserial==3.4」

pyserial安裝完成