python練習題 開關電燈

2021-07-30 09:37:09 字數 1877 閱讀 1828

有n個燈放在一起,從1到n依次順序編號,有n個人也從1到n依次編號。1號將燈全部熄滅,2號將,凡是2的倍數的燈開啟;3號將凡是3的倍數的燈作相反處理(該燈如為開啟,則將他關閉;如果關閉,則將它開啟)。以後的人都和3號一樣,將凡是自己編號倍數的燈作相反處理。

程式設計實現:第n個人操作後,按順序輸出等的狀態(1表示燈開啟,0表示燈熄滅)。

輸入 輸入:n(1<= n <= 2000000),燈的個數

輸出 輸出:燈的狀態,用01序列表示,中間無空格。

輸入示例:

2 輸出示例:

01**實現:

__author__ = 'c08762'

# -*- coding:utf-8 -*-

defis_valid

(numb):

"""輸入合法性檢查,必須輸入正數,不支援科學計數法"""

try:

int(numb)

except:

return

false

else:

if int(numb) < 1

or int(numb) > 2000000:

return

false

else:

return

true

# 接收乙個數,並進行合法性檢查,範圍檢查非必須,n可為任意正整數

num_t = input("pls enter a number between 1 and 2000000:\n")

while

not is_valid(num_t):

num_t = input("that's not a valid number. try again:\n")

num = int(num_t)

# 使用正負號表示燈的狀態

lights = list(range(1, num+1))

for i in range(1, num+1):

for j in range(i-1, num, i):

lights[j] = - lights[j]

# 按題意轉化為0,1表示狀態

for k in range(len(lights)):

if lights[k] > 0:

print(1, end='')

else:

print(0, end='')

# 燈的狀態儲存在列表中

# print(lights)

# for k in range(len(lights)):

# if lights[k] > 0:

# lights[k] = 1

# else:

# lights[k] = 0

# print(lights)

# for i in lights:

# print(i, end='')

# print('\nthere are(is) %d light(s) off.' % lights.count(0))

效果:

pls enter a number between 1 and 2000000:

10 0110111101

效果2:

pls enter a number between 1 and 2000000:

10 [-1, 2, 3, -4, 5, 6, 7, 8, -9, 10]

[0, 1, 1, 0, 1, 1, 1, 1, 0, 1]

0110111101

there are(is) 3 light(s) off.

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...

python的練習題 Python練習題

1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...

python練習題目

三色球問題 有紅 黃 藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在乙個盒子中,從中任意摸出 8 個球,程式設計計算摸出球的各種顏色搭配。print red tyellow tblue for red inrange 0,4 for yellow in ra...