Python筛选被3整除的全部三位数

trilemma 2019-09-28 08:44:45
用Python筛选被3整除的全部三位数

n=100
for n in range(100,1001):
while n%3==0:
print(n,end='/')
n=n+3


已经限定n的范围在100到1000之间,为什么打印结果会显示超过1000的数字??
...全文
1087 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmzl 2019-10-01
  • 打赏
  • 举报
回复
引用 15 楼 jmzl的回复:
for i in range(102,1000,3): print(i)
这么简单的事情搞这么麻烦
jmzl 2019-10-01
  • 打赏
  • 举报
回复
for i in range(102,1000,3): print(i)
Kloaking 2019-09-30
  • 打赏
  • 举报
回复
py代码缩进的重要性
小羽Jary 2019-09-30
  • 打赏
  • 举报
回复
引用 6 楼 trilemma 的回复:
我的代码也能筛出所有被3整除的三位数,但会不停搜索下去,这是什么原因。n都限定在(100,1000)之间了。=== RESTART: C:\Users\Kevin\AppData\Local\Programs\Python\Python37\2.5.py === 102/105/108/111/114/117/120/123/126/129/132/135/138/141/144/147/150/153/156/159/162/165/168/171/174/177/180/183/186/189/192/195/198/201/204/207/210/213/216/219/222/225/228/231/234/237/240/243/246/249/252/255/258/261/264/267/270/273/276/279/282/285/288/291/294/297/300/303/306/309/312/315/318/321/324/327/330/333/336/339/342/345/348/351/354/357/360/363/366/369/372/375/378/381/384/387/390/393/396/399/402/405/408/411/414/417/420/423/426/429/432/435/438/441/444/447/450/453/456/459/462/465/468/471/474/477/480/483/486/489/492/495/498/501/504/507/510/513/516/519/522/525/528/531/534/537/540/543/546/549/552/555/558/561/564/567/570/573/576/579/582/585/588/591/594/597/600/603/606/609/612/615/618/621/624/627/630/633/636/639/642/645/648/651/654/657/660/663/666/669/672/675/678/681/684/687/690/693/696/699/702/705/708/711/714/717/720/723/726/729/732/735/738/741/744/747/750/753/756/759/762/765/768/771/774/777/780/783/786/789/792/795/798/801/804/807/810/813/816/819/822/825/828/831/834/837/840/843/846/849/852/855/858/861/864/867/870/873/876/879/882/885/888/891/894/897/900/903/906/909/912/915/918/921/924/927/930/933/936/939/942/945/948/951/954/957/960/963/966/969/972/975/978/981/984/987/990/993/996/999/1002/1005/1008/1011/1014/1017/1020/1023/1026/1029/1032/1035/1038/1041/1044/1047/1050/1053/1056/1059/1062/1065/1068/1071/1074/1077/1080/1083/1086/1089/1092/1095/1098/1101/1104/1107/1110/1113/1116/1119/1122/1125/1128/1131/1134/1137/1140/1143/1146/1149/1152/1155/1158/1161/1164/1167/1170/1173/1176/1179/1182/1185/1188/1191/1194/1197/1200/1203/1206/1209/1212/1215/1218/1221/1224/1227/1230/1233/1236/1239/1242/1245/1248/1251/1254/1257/1260/1263/1266/1269/1272/1275/1278/1281/1284/1287/1290/1293/1296/1299/1302/1305/1308/1311/1314/1317/1320/1323/1326/1329/1332/1335/1338/1341/1344/1347/1350/1353/1356/1359/1362/1365/1368/1371/1374/1377/1380/1383/1386/1389/1392/1395/1398/1401/1404/1407/1410/1413/1416/1419/1422/1425/1428/1431/1434/1437/1440/1443/1446/1449/1452/1455/1458/1461/1464/1467/1470/1473/1476/1479/1482/1485/1488/1491/1494/1497/1500/1503/1506/1509/1512/1515/1518/1521/1524/1527/1530/1533/1536/1539/1542/1545/1548/1551/1554/1557/1560/1563/1566/1569/1572/1575/1578/1581/1584/1587/1590/1593/1596/1599/1602/1605/1608/1611/1614/1617/1620/1623/1626/1629/1632/1635/1638/1641/1644/1647/1650/1653/1656/1659/1662/1665/1668/1671/1674/1677/1680/1683/1686/1689/1692/1695/1698/1701/1704/1707/1710/1713/1716/1719/1722/1725/1728/1731/1734/1737/1740/1743/1746/1749/1752/1755/1758/1761/1764/1767/1770/1773/1776/1779/1782/1785/1788/1791/1794/1797/1800/1803/1806/1809/1812/1815/1818/1821/1824/1827/1830/1833/1836/1839/1842/1845/1848/1851/1854/1857/1860/1863/1866/1869/1872/1875/1878/1881/1884/1887/1890/1893/1896/1899/1902/1905/1908/1911/1914/1917/1920/1923/1926/1929/1932/1935/1938/1941/1944/1947/1950/1953/1956/1959/1962/1965/1968/1971/1974/1977/1980/1983/1986/1989/1992/1995/1998/2001/2004/2007/2010/2013/2016/2019/2022/2025/2028/2031/2034/2037/2040/2043/2046/2049/2052/2055/2058/2061/2064/2067/2070/2073/2076/2079/2082/2085/2088/2091/2094/2097/2100/2103/2106/2109/2112/2115/2118/2121/
因为你在while里面+3了所以一直在while循环里面就没出去过,一时循环一时爽,一直循环一直爽
Eleven 2019-09-30
  • 打赏
  • 举报
回复

BASE = 3
for n in range(100, 1000):
if 0 == n % BASE:
print(n, end = '/')
n += BASE
有点意思! 2019-09-30
  • 打赏
  • 举报
回复
for n in range(100,1001): if n%3==0: print(n,end='\n')
Risk_Y 2019-09-30
  • 打赏
  • 举报
回复
引用 13 楼 trilemma 的回复:
感谢细心讲解
你在这里的问题是将if条件判断用成了while循环
trilemma 2019-09-30
  • 打赏
  • 举报
回复
感谢细心讲解
大头姜 2019-09-30
  • 打赏
  • 举报
回复
个人认为: 造成这个问题的根本原因在于n=n+3,当n满足可被3整除时,进入while循环,此时n=n+3,肯定也满足被3整除的条件,这样就造成了一个while死循环,不再受for条件语句限制。将n=n+3改成n=n+1即可。 另外, n=100 #没有必要设置变量n=100,这个在下面的循环中完全无作用,可去除 for n in range(100,1001): #range(100,1001)实际取值范围是[100,1000),题目为三位数,所以range()范围设置不够精准;建议设置为range(100,1000),这样取值就是[100,999)区间了
trilemma 2019-09-30
  • 打赏
  • 举报
回复
感谢各位指导,文科生茅塞顿开
小羽Jary 2019-09-29
  • 打赏
  • 举报
回复
引用 4 楼 python全栈开发社区 的回复:
这个一行代码的事整的这么复杂 [i for i in range(100,1001) if i % 3 == 0 ]

C:\Users\chen>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> [i for i in range(100,1001) if i % 3 == 0 ]
[102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378, 381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450, 453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486, 489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522, 525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, 885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, 921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954, 957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990, 993, 996, 999]
列表推导式用的不错,python就应该这么优雅
  • 打赏
  • 举报
回复
这个一行代码的事整的这么复杂
[i for i in range(100,1001) if i % 3 == 0 ]


C:\Users\chen>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> [i for i in range(100,1001) if i % 3 == 0 ]
[102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378, 381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450, 453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486, 489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522, 525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, 885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, 921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954, 957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990, 993, 996, 999]
trilemma 2019-09-29
  • 打赏
  • 举报
回复
我的代码也能筛出所有被3整除的三位数,但会不停搜索下去,这是什么原因。n都限定在(100,1000)之间了。=== RESTART: C:\Users\Kevin\AppData\Local\Programs\Python\Python37\2.5.py === 102/105/108/111/114/117/120/123/126/129/132/135/138/141/144/147/150/153/156/159/162/165/168/171/174/177/180/183/186/189/192/195/198/201/204/207/210/213/216/219/222/225/228/231/234/237/240/243/246/249/252/255/258/261/264/267/270/273/276/279/282/285/288/291/294/297/300/303/306/309/312/315/318/321/324/327/330/333/336/339/342/345/348/351/354/357/360/363/366/369/372/375/378/381/384/387/390/393/396/399/402/405/408/411/414/417/420/423/426/429/432/435/438/441/444/447/450/453/456/459/462/465/468/471/474/477/480/483/486/489/492/495/498/501/504/507/510/513/516/519/522/525/528/531/534/537/540/543/546/549/552/555/558/561/564/567/570/573/576/579/582/585/588/591/594/597/600/603/606/609/612/615/618/621/624/627/630/633/636/639/642/645/648/651/654/657/660/663/666/669/672/675/678/681/684/687/690/693/696/699/702/705/708/711/714/717/720/723/726/729/732/735/738/741/744/747/750/753/756/759/762/765/768/771/774/777/780/783/786/789/792/795/798/801/804/807/810/813/816/819/822/825/828/831/834/837/840/843/846/849/852/855/858/861/864/867/870/873/876/879/882/885/888/891/894/897/900/903/906/909/912/915/918/921/924/927/930/933/936/939/942/945/948/951/954/957/960/963/966/969/972/975/978/981/984/987/990/993/996/999/1002/1005/1008/1011/1014/1017/1020/1023/1026/1029/1032/1035/1038/1041/1044/1047/1050/1053/1056/1059/1062/1065/1068/1071/1074/1077/1080/1083/1086/1089/1092/1095/1098/1101/1104/1107/1110/1113/1116/1119/1122/1125/1128/1131/1134/1137/1140/1143/1146/1149/1152/1155/1158/1161/1164/1167/1170/1173/1176/1179/1182/1185/1188/1191/1194/1197/1200/1203/1206/1209/1212/1215/1218/1221/1224/1227/1230/1233/1236/1239/1242/1245/1248/1251/1254/1257/1260/1263/1266/1269/1272/1275/1278/1281/1284/1287/1290/1293/1296/1299/1302/1305/1308/1311/1314/1317/1320/1323/1326/1329/1332/1335/1338/1341/1344/1347/1350/1353/1356/1359/1362/1365/1368/1371/1374/1377/1380/1383/1386/1389/1392/1395/1398/1401/1404/1407/1410/1413/1416/1419/1422/1425/1428/1431/1434/1437/1440/1443/1446/1449/1452/1455/1458/1461/1464/1467/1470/1473/1476/1479/1482/1485/1488/1491/1494/1497/1500/1503/1506/1509/1512/1515/1518/1521/1524/1527/1530/1533/1536/1539/1542/1545/1548/1551/1554/1557/1560/1563/1566/1569/1572/1575/1578/1581/1584/1587/1590/1593/1596/1599/1602/1605/1608/1611/1614/1617/1620/1623/1626/1629/1632/1635/1638/1641/1644/1647/1650/1653/1656/1659/1662/1665/1668/1671/1674/1677/1680/1683/1686/1689/1692/1695/1698/1701/1704/1707/1710/1713/1716/1719/1722/1725/1728/1731/1734/1737/1740/1743/1746/1749/1752/1755/1758/1761/1764/1767/1770/1773/1776/1779/1782/1785/1788/1791/1794/1797/1800/1803/1806/1809/1812/1815/1818/1821/1824/1827/1830/1833/1836/1839/1842/1845/1848/1851/1854/1857/1860/1863/1866/1869/1872/1875/1878/1881/1884/1887/1890/1893/1896/1899/1902/1905/1908/1911/1914/1917/1920/1923/1926/1929/1932/1935/1938/1941/1944/1947/1950/1953/1956/1959/1962/1965/1968/1971/1974/1977/1980/1983/1986/1989/1992/1995/1998/2001/2004/2007/2010/2013/2016/2019/2022/2025/2028/2031/2034/2037/2040/2043/2046/2049/2052/2055/2058/2061/2064/2067/2070/2073/2076/2079/2082/2085/2088/2091/2094/2097/2100/2103/2106/2109/2112/2115/2118/2121/
hx366 2019-09-28
  • 打赏
  • 举报
回复

n = 100
while n % 3 != 0:
        n += 1
for k in range(n, 1000, 3):
    print(k,end='/')
hx366 2019-09-28
  • 打赏
  • 举报
回复

n = 100
while n % 3 != 0:
        n += 1
while n < 1000:
    print(n,end='/')
    n += 3
hx366 2019-09-28
  • 打赏
  • 举报
回复
当n==102时,进入while死循环,一直没出来。for的终止条件无法进入判断

for n in range(100,1000, 3):
    while n % 3 != 0:
        n += 1
    print(n,end='/')

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧