Tôi mới lập trình và được yêu cầu tổng số các số lẻ từ 1 đến (2*n) -1 bằng cách sử dụng vòng lặp thời gian. Đây là nỗ lực của tôi: def sum_odd_n(n):
while n<2*n:
sum = 0
if n%2==1:
sum = sum+n
return (sum)
Tôi có thể biết sai lầm của mình không? Bất kỳ trợ giúp sẽ được đánh giá cao Hỏi ngày 30 tháng 8 năm 2017 lúc 11:17Aug 30, 2017 at 11:17
2 Điều kiện while n<2*n: luôn đúng trong khi def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
0, bạn sẽ có một vòng lặp vô hạn. Hãy thử những điều sau đâydef sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
Để hoàn thiện, cách xử lý nhiều hơn để xử lý điều này sẽ được sử dụng def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
1 với biểu thức máy phátdef sum_odd(n):
return sum(i for i in range(1, 2*n -1) if i%2 == 1)
Đã trả lời ngày 30 tháng 8 năm 2017 lúc 11:19Aug 30, 2017 at 11:19
Cory Kramercory KramerCory Kramer Huy hiệu vàng 111K1515 gold
badges160 silver badges209 bronze badges 2 Gợi ý đầu tiên sẽ là xem xét tình trạng của bạn trong khi vòng lặp: while n < 2*n
Lưu ý rằng điều này sẽ luôn luôn đúng, bởi vì nếu def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
2, thì def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
3 luôn lớn hơn. Nếu bạn cần thêm trợ giúp, hãy viết bình luận;)Cập nhật: Tôi sẽ chỉ cho bạn biết điều gì là sai vì vậy nếu bạn muốn tự mình thử nó, hãy ngừng đọc. Vì vậy, về cơ bản bạn cần một biến khác, hãy nói def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
4 sẽ lặp đi qua các số nguyên. Sau đó, bạn có thể làm một cái gì đó như thế này: I will just tell you what is wrong so if you want to try it out first on your own, stop reading. So basically you need another variable, let's say def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
4 that will loop through integers. Then you can do something like this:def sum_odd_n(n):
i = n
sum = 0
while i < 2*n:
if i % 2 == 1:
sum += i
i += 1
print sum # for python3: print(sum)
Đã trả lời ngày 30 tháng 8 năm 2017 lúc 11:19Aug 30, 2017 at
11:19 Cory Kramercory Kramercampovski Huy hiệu vàng 111K1516 silver badges35 bronze badges 0 >>> def sum_odd_n(n):
... return sum([2 ** i for i in range(0,n,1) ])
...
>>> sum_odd_n(2)
3
>>> sum_odd_n(5)
31
>>>
Gợi ý đầu tiên sẽ là xem xét tình trạng của bạn trong khi vòng lặp:Aug 30, 2017 at 11:22 Lưu ý rằng điều này sẽ luôn luôn đúng, bởi vì nếu def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
2, thì def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
3 luôn lớn hơn. Nếu bạn cần thêm trợ giúp, hãy viết bình luận;)KallzCập nhật: Tôi sẽ chỉ cho bạn biết điều gì là sai vì vậy nếu bạn muốn tự mình thử nó, hãy ngừng đọc. Vì vậy, về cơ bản bạn cần một biến khác, hãy nói def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
4 sẽ lặp đi qua các số nguyên. Sau đó, bạn có thể làm một cái gì đó như thế này:1 gold badge19 silver badges38 bronze badges 1 Campovskicampovski def sum_odd_n(n):
while n<2*n: # n will always be less than ('<') 2*n. For eg, if n=5, 5<10.
sum = 0 # you are resetting the sum at every iteration. We need to take this outside.
if n%2==1:
sum = sum+n
return (sum)
2.77916 huy hiệu bạc35 huy hiệu đồng def sum_odd_n(n):
sum = 0 # sum is initialized here, so that it doesn't reset inside the loop
iterator = 0
while iterator<2*n
if iterator%2==1:
sum = sum+iterator # or sum += iterator
iterator = iterator + 1 # otherwise this will be an infinite loop, as iterator will always be 0.
return sum
Đã trả lời ngày 30 tháng 8 năm 2017 lúc 11:22 KallzkallzAug 30, 2017 at 11:52 3.0961 Huy hiệu vàng19 Huy hiệu bạc38 Huy hiệu đồnglloydaf Tôi sẽ cố gắng chỉ ra những sai lầm bạn đã làm và cố gắng đưa ra sửa chữa.3 silver badges17 bronze badges Đây là những gì tôi nghĩ nên làm việc. def sum_odd(n: int):
total = 0
for x in range(2*n):
if x%2==1:
total += x
return total
Hy vọng điều này làm việc cho bạn. :-) Đã trả lời ngày 30 tháng 8 năm 2017 lúc 11:522 gold badges10 silver badges25 bronze badges LLOYDAFLLOYDAFJul 9, 2020 at 11:02 |