Rewriting “do while” loop from java to python
本问题已经有最佳答案,请猛点这里访问。
我试图把下面的一段Java代码重写到Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class pcp { public static void main(String[] args) { final int b = 13; final int m = 1000; int a0 = 1; int mas[] = new int[10]; int a = a0, T = 0; do { System.out.print(a +""); a = (b * a) % m; T++; mas[a * 10 / m]++; } while (a != a0); System.out.print(" " + T +" "); for (int i = 0; i < mas.length; i++) System.out.print(mas[i] +""); } } |
它是一个简单的伪随机数生成器,输出如下:
1 2 3 4 5 | 1 13 169 197 561 293 809 517 721 373 849 37 481 253 289 757 841 933 129 677 801 413 369 797 361 693 9 117 521 773 49 637 281 653 489 357 641 333 329 277 601 813 569 397 161 93 209 717 321 173 249 237 81 53 689 957 441 733 529 877 401 213 769 997 961 493 409 317 121 573 449 837 881 453 889 557 241 133 729 477 201 613 969 597 761 893 609 917 921 973 649 437 681 853 89 157 41 533 929 77 100 11 9 11 9 11 9 11 9 11 9 |
下面是我的python代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | b = 13 m = 1000 a0 = 1 mas = [0] * 10 a = a0 T = 0 while not (a != a0): print(a) a = (b * a) % m T = T + 1 mas[int(a * 10 / m)] = mas[int(a * 10 / m)] + 1 print(T) i = 0 while (i < len(mas)): print(mas[i]) i = i + 1 |
它只是不会进入循环,我对如何以正确的方式为python重写它有点茫然。
感谢您的阅读和帮助。
你可能想尝试改变
1 | while not (a != a0): |
到
1 | while (a != a0): |
编辑:这不是很好的代码。我不知道为什么你显式地把"a"设置为"a0",但这意味着while循环的条件在写的方式上基本上是无用的。另外,您应该阅读一下命名约定。
你应该改变而不是仅仅改变,两者都是相反的,使你的程序在特定的条件下根本不进入循环。