python可以打印出奇数。但是,输出不是我想要的。它应该看起来像 1+3+5+7 = 16 但我不能把它变成一行。
python如何从 while 循环中提取值,因为我的方法只给出最新的奇数 7,而 1,3 和 5 无法取出。
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python">num = <span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">"Insert a postive integer:"</span>)) <span style="color:var(--highlight-comment)">#4</span>
oddNum = <span style="color:var(--highlight-namespace)">1</span>
total = <span style="color:var(--highlight-namespace)">0</span>
count = <span style="color:var(--highlight-namespace)">1</span>
<span style="color:var(--highlight-keyword)">while</span> count <= num:
odd = (<span style="color:var(--highlight-literal)">str</span>(oddNum))
<span style="color:var(--highlight-literal)">print</span> (odd)
total = total + oddNum
oddNum = oddNum + <span style="color:var(--highlight-namespace)">2</span>
count += <span style="color:var(--highlight-namespace)">1</span>
<span style="color:var(--highlight-literal)">print</span> (odd + <span style="color:var(--highlight-variable)">"="</span> + <span style="color:var(--highlight-literal)">str</span>(total))
<span style="color:var(--highlight-comment)">#output will be:</span>
<span style="color:var(--highlight-variable)">'''
1
3
5
7
7=16
but it should look like 1+3+5+7=16
'''</span></code></span></span>
解答的一种方法是使用:
range()生成奇数列表的方法
.join()将奇数拼接在一起的方法(例如 1+3+5+7)
f-strings打印赔率连同total = sum(odd_nums)
代码:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python">num = <span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">"Insert a postive integer:"</span>)) <span style="color:var(--highlight-comment)">#4</span>
odd_nums = <span style="color:var(--highlight-literal)">range</span>(<span style="color:var(--highlight-namespace)">1</span>, num * <span style="color:var(--highlight-namespace)">2</span>, <span style="color:var(--highlight-namespace)">2</span>)
sum_nums = <span style="color:var(--highlight-variable)">"+"</span>.join(<span style="color:var(--highlight-literal)">map</span>(<span style="color:var(--highlight-literal)">str</span>, odd_nums))
<span style="color:var(--highlight-literal)">print</span>(<span style="color:var(--highlight-variable)">f"<span style="color:var(--highlight-color)">{sum_nums}</span>=<span style="color:var(--highlight-color)">{<span style="color:var(--highlight-literal)">sum</span>(odd_nums)}</span>"</span>)</code></span></span>
输出:
1+3+5+7=16
笔记:
相同但使用两行代码:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python">num = <span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">"Insert a postive integer:"</span>)) <span style="color:var(--highlight-comment)">#4</span>
<span style="color:var(--highlight-literal)">print</span>(<span style="color:var(--highlight-variable)">f"<span style="color:var(--highlight-color)">{<span style="color:var(--highlight-variable)">'+'</span>.join(<span style="color:var(--highlight-literal)">map</span>(<span style="color:var(--highlight-literal)">str</span>, <span style="color:var(--highlight-literal)">range</span>(<span style="color:var(--highlight-namespace)">1</span>, num * <span style="color:var(--highlight-namespace)">2</span>, <span style="color:var(--highlight-namespace)">2</span>)))}</span>=<span style="color:var(--highlight-color)">{<span style="color:var(--highlight-literal)">sum</span>(<span style="color:var(--highlight-literal)">range</span>(<span style="color:var(--highlight-namespace)">1</span>, num * <span style="color:var(--highlight-namespace)">2</span>, <span style="color:var(--highlight-namespace)">2</span>))}</span>"</span>)</code></span></span>
输出:
1+3+5+7=16
使用字符串:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python">num = <span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">"Insert a postive integer:"</span>)) <span style="color:var(--highlight-comment)">#4</span>
oddNum = <span style="color:var(--highlight-namespace)">1</span>
total = <span style="color:var(--highlight-namespace)">0</span>
count = <span style="color:var(--highlight-namespace)">1</span>
sequence = <span style="color:var(--highlight-variable)">''</span>
<span style="color:var(--highlight-keyword)">while</span> count <= num:
sequence += (<span style="color:var(--highlight-variable)">"+"</span> <span style="color:var(--highlight-keyword)">if</span> sequence != <span style="color:var(--highlight-variable)">""</span> <span style="color:var(--highlight-keyword)">else</span> <span style="color:var(--highlight-variable)">""</span>) + <span style="color:var(--highlight-literal)">str</span>(oddNum)
total = total + oddNum
oddNum = oddNum + <span style="color:var(--highlight-namespace)">2</span>
count += <span style="color:var(--highlight-namespace)">1</span>
<span style="color:var(--highlight-literal)">print</span> (sequence + <span style="color:var(--highlight-variable)">"="</span> + <span style="color:var(--highlight-literal)">str</span>(total))</code></span></span>
使用打印:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python">num = <span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">"Insert a postive integer:"</span>)) <span style="color:var(--highlight-comment)">#4</span>
oddNum = <span style="color:var(--highlight-namespace)">1</span>
total = <span style="color:var(--highlight-namespace)">0</span>
count = <span style="color:var(--highlight-namespace)">1</span>
<span style="color:var(--highlight-keyword)">while</span> count <= num:
<span style="color:var(--highlight-keyword)">if</span> count != <span style="color:var(--highlight-namespace)">1</span>:
<span style="color:var(--highlight-literal)">print</span>(<span style="color:var(--highlight-variable)">'+'</span>, end=<span style="color:var(--highlight-variable)">''</span>)
<span style="color:var(--highlight-literal)">print</span> (oddNum, end=<span style="color:var(--highlight-variable)">''</span>)
total = total + oddNum
oddNum = oddNum + <span style="color:var(--highlight-namespace)">2</span>
count += <span style="color:var(--highlight-namespace)">1</span>
<span style="color:var(--highlight-literal)">print</span> (<span style="color:var(--highlight-variable)">"="</span> + <span style="color:var(--highlight-literal)">str</span>(total)) </code></span></span>
或者使用 walrus (:=)
、range
、print
、sep
和end
:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-python"><span style="color:var(--highlight-literal)">print</span>(*(odd:=[*<span style="color:var(--highlight-literal)">range</span>(<span style="color:var(--highlight-namespace)">1</span>,<span style="color:var(--highlight-literal)">int</span>(<span style="color:var(--highlight-literal)">input</span>(<span style="color:var(--highlight-variable)">'Insert a postive integer:'</span>))*<span style="color:var(--highlight-namespace)">2</span>,<span style="color:var(--highlight-namespace)">2</span>)]),sep=<span style="color:var(--highlight-variable)">'+'</span>,end=<span style="color:var(--highlight-variable)">'='</span>);<span style="color:var(--highlight-literal)">print</span>(<span style="color:var(--highlight-literal)">sum</span>(odd))
<span style="color:var(--highlight-comment)"># Insert a postive integer:4</span>
<span style="color:var(--highlight-comment)"># 1+3+5+7=16</span></code></span></span>