Python 开始在多行打印字符串
用python 我在家里学习edx课程,以扩展我的编程技能。我遇到的一项作业把我难住了。目标是能够插入一个整数,并为其打印一个时间表 此表将分为列和行。对于给定的变量输入,我可以将所需的值组合成一个字符串,用于所有数字的相乘。我添加了在整数之间调用的制表符 现在这是一个字符串,我不能让它分成不同大小的裂缝,并根据最初输入的不同值进行打印 我尝试了文本换行,但不管我如何根据不同的示例进行换行,都会出现错误 请帮助我找到一个解决方案,并解释它为什么有效。我正在努力学习这一点,没有一行一匙的代码可以解决这个问题,但让我仍然一无所知 到目前为止,我在slack中找到的这个类的提示中没有一个包含课程中列出的术语或命令。但很多东西都没有列出来 这就是我所拥有的,请忽略尝试不同解决方案所留下的额外内容Python 开始在多行打印字符串,python,edx,Python,Edx,用python 我在家里学习edx课程,以扩展我的编程技能。我遇到的一项作业把我难住了。目标是能够插入一个整数,并为其打印一个时间表 此表将分为列和行。对于给定的变量输入,我可以将所需的值组合成一个字符串,用于所有数字的相乘。我添加了在整数之间调用的制表符 现在这是一个字符串,我不能让它分成不同大小的裂缝,并根据最初输入的不同值进行打印 我尝试了文本换行,但不管我如何根据不同的示例进行换行,都会出现错误 请帮助我找到一个解决方案,并解释它为什么有效。我正在努力学习这一点,没有一行一匙的代码可以解
mystery_int = 5
#You may modify the lines of code above, but don't move them!
#When you Submit your code, we'll change these lines to
#assign different values to the variables.
#This is a tough one! Stick with it, you can do it!
#
#Write a program that will print the times table for the
#value given by mystery_int. The times table should print a
#two-column table of the products of every combination of
#two numbers from 1 through mystery_int. Separate consecutive
#numbers with either spaces or tabs, whichever you prefer.
#
#For example, if mystery_int is 5, this could print:
#
#1 2 3 4 5
#2 4 6 8 10
#3 6 9 12 15
#4 8 12 16 20
#5 10 15 20 25
#
#To do this, you'll want to use two nested for loops; the
#first one will print rows, and the second will print columns
#within each row.
#
#Hint: How can you print the numbers across the row without
#starting a new line each time? With what you know now, you
#could build the string for the row, but only print it once
#you've finished the row. There are other ways, but that's
#how to do it using only what we've covered so far.
#
#Hint 2: To insert a tab into a string, use the character
#sequence "\t". For example, "1\t2" will print as "1 2".
#
#Hint 3: Need to just start a new line without printing
#anything else? Just call print() with no arguments in the
#parentheses.
#
#Hint 4: If you're stuck, try first just printing out all
#the products in one flat list, each on its own line. Once
#that's working, then worry about how to organize it into
#a table.
#Add your code here!
import textwrap
a = mystery_int
b = 1
c = 0
d = 1
e = ""
f = ""
g = ""
h = "\t"
j = 1
k = a*2
for b in range(1,a + 1):
for c in range(1,a+1):
d = b * c
e +=str(d)+","
f = str(e)
g = str.replace(f,"," ,"\t")
#textwrap.wrap(g,10)
#print(g[0:int(k)])
print(g[:k])
就快到了,只需收集列表中每一行的值,然后在每次迭代内部循环后打印行值 假设您基本上已经有了一个完整的解决方案,除了一些小错误,我将提供一个完整的解决方案演练,并给出解释 注释:我们将使用
summary\u int
而不是a
,并将b
(外循环增量)更改为i
,将c
(内循环增量)更改为j
,以符合惯例:
mystery_int = 5
for i in range(1, mystery_int+1):
row = [str(i)]
for j in range(2, mystery_int+1):
row = row + [str(i*j)]
print('\t'.join(row))
输出:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
外部循环(i
)迭代行,内部循环(j
)迭代列。在每一个新行,我们需要一个新的列表,
行
,它开始时只有一个元素。第一个元素是我们要乘以的数字(因此第1行的第一个元素是1
,第2行的第一个元素是2
,依此类推)
请注意,我们正在将所有整数转换为字符串(i
-->str(i)
),因为我们最终希望以空格分隔的序列打印每一行
- 无论何时使用空格打印,即使要打印的内容由数字组成,也需要将该内容转换为字符串表示形式。(您已经在代码中这样做了,但这一点值得重申,因为这是一个常见的绊脚石。)
j
)中,计算第一列(i*2
,i*3
,…,i*int
)之后每列的乘积。对于每个通过内部循环的过程,将新产品添加到行
。当我们完成内部循环时,我们将有一个完整的乘法序列列表,该行从integeri
开始
此时,在移动到下一行之前,请打印出当前行。该方法是连接列表中元素的常用方法,使用
前面指定的分隔符
- 例如,
将创建一个由单个空格分隔的值组成的字符串:“”.join(row)
' '.join(["1","2","3","4","5"]) # '1 2 3 4 5'
- 我选择使用制表符分隔的字符串,因为打印输出具有更好的格式。(由于某些行具有两位数,而其他行仅具有一位数,因此单个空格分隔符会使列显示不对齐。)
- 从教学的角度来看,用“基”整数
初始化每个新的i
行似乎更直观:
。这为后面的行计算的其余部分提供了一个可视锚定,在内部循环中。但是,简单地初始化一个空列表,row=[str(i)]
,然后以row=[]
开始内部循环也是有效的(可能有点“干净”):j=1
for i in range(1, mystery_int+1): row = [] for j in range(1, mystery_int+1): row = row + [str(i*j)] print('\t'.join(row))
- 有了额外的模块,就可以用更简单、通常更快的代码实现相同的目标。看起来您正在使用Python标准库,这就是为什么我在主解决方案中保留了基础知识。但考虑到乘法表实际上是两个相同向量的外积,我们也可以使用模块,它提供了许多快速的数学运算:
import numpy as np print(np.array2string(np.outer(np.arange(1, mystery_int+1), np.arange(1, mystery_int+1)), separator='\t'))
重点是,当您开始更多地使用Python来完成给定的任务,而不是简单地学习编程基础知识时,可以合理地假设有一个模块是定制的,适合您的需要,这可以节省实时时间。有一个Python模块 您可以使用“\n”而不是“\t”来获取新行而不是制表符。但是,从您得到的提示来看,他们似乎希望您单独打印这些行,即为每行制作并打印一个单独的字符串。谢谢。是的,这是如何将字符串分成不同大小的部分,以匹配初始变量,并以这种方式打印它们,这给了我适合度。非常感谢。这就是我需要理解的原因。我很感谢你花时间把所有事情都安排成那样。我正在学习python以学习编程,从而将我的职业道路转变为编程和软件开发,因此我需要理解为什么事情不仅仅是解决每个课程问题。我再次感谢你,不客气!祝你转行好运。如果此答案是对您问题的最佳回答,请单击答案左侧的复选标记将其标记为接受。
for i in range(1, mystery_int + 1):
row_string = ""
for j in range(1, mystery_int + 1):
product = i * j
row_string += str(product) + "\t"
print(row_string)