例如,如果给出数字3,程序将打印
1
1 2 2
1 2 2 3 3 3
好的,我试过这样的话:
n = eval(input("Enter a positive integer: "))
a=1
for i in range(1,n+1):
for j in range(1,a+1):
print(j," ",sep="",end="")
a+=1
print()
它将打印如下:
1
1 2
1 2 3
答案 0 :(得分:0)
你很亲密。您的问题是需要使用j
打印当前号码j
次。值得庆幸的是,Python通过使用序列乘法使这变得容易。也就是说,Python允许您将序列(如字符串)乘以数字。字符串的内容将复制它乘以的次数:
>>> 'a' * 3
'aaa'
>>> '1' * 4
'1111'
因此,您可以将当前整数j
转换为字符串,并将字符串乘以j
:
for j in range(1, a + 1):
print((str(j) + ' ') * j, sep='', end="")
通过上述更改,您的代码现在输出:
Enter a positive integer: 3
1
1 2 2
1 2 2 3 3
以下是一些可以改进代码的方法。
避免eval
像黑瘟一样。安全方面非常危险。当然,你现在甚至不必担心这个问题,但最好不要养成习惯。总有一种更好的方式 TM 。在这种情况下,请使用内置函数int
。
不要使用a
保留明确的计数器,而是使用内置函数enumerate
。
通过上述改进,您的代码变为:
n = int(input("Enter a positive integer: "))
for a, i in enumerate(range(1, n + 1), 1):
for j in range(1, a + 1):
print((str(j) + ' ') * j, sep='', end="")
print()
答案 1 :(得分:-1)
这是一种执行您要求的方法。
def numbers(n: int) -> None:
for i in range(1, n+2):
for j in range(1, i):
print(j * (str(j) + ' '), end='')
print()
n+1
的所有数字。 n+2
的原因)。 j
次j
的值,后跟一个空格,将其附加到此行之前已打印的内容上。 希望这有帮助!
答案 2 :(得分:-1)
您错过了您提供的代码中的关键内容(如下所示):
n = eval(input("Enter a positive integer: "))
a=1
for i in range(1,n+1):
for j in range(1,a+1):
print(j," ",sep="",end="")
a+=1
print()
在for j in range(...)
循环中,您实际打印出每个数字,只打印一次,而不是j
次(其中j
是当前数字)。
您可以使用Python的特殊行为(字符串'乘法')来解决此问题。
n = eval(input("Enter a positive integer: "))
a = 1
for i in range(1, n+1):
for j in range(1, a+1):
print('{} '.format(j) * j, end="")
a += 1
print()
答案 3 :(得分:-1)
你肯定是在正确的轨道上。让我们仔细看看你的代码:
import unittest
from selenium import webdriver
import time
import sys
driver = webdriver.Chrome()
driver.get('website')
driver.maximize_window()
# Displays Time Sheet for Current Day
element = driver.find_element_by_xpath('//*[@id="page-wrapper"]/div[1]/h1')
# this element is visible
print(element.text)
# Displays Start Time
element = driver.find_element_by_xpath('//*
[@id="pageinner"]/div/div[1]/div/div/div/div[1]/div[2]/div[1]')
print("Start time was at:", element.text)
# Displays End Time
element = driver.find_element_by_xpath('//*
[@id="pageinner"]/div/div[1]/div/div/div/div[4]/div[2]/div[1]')
print("Clocked out as of:", element.text)
# Displays when out to Lunch
element = driver.find_element_by_xpath('//*[@id="page-
inner"]/div/div[1]/div/div/div/div[2]/div[2]/div[1]/h3')
print("I left for Lunch at:", element.text)
# Displays when back from Lunch
element = driver.find_element_by_xpath('//*[@id="page-
inner"]/div/div[1]/div/div/div/div[3]/div[2]/div[1]/h3')
print("I arrived back from Lunch at:", element.text)
# Total Hours for The Day
element = driver.find_element_by_xpath('//*[@id="page-
inner"]/div/div[1]/div/div/div/div[5]/div[2]/div[1]')
print("I was at work for:", element.text)
'''
# Save to txt
sys.stdout = open('file.txt', 'w')
print(element.text)
'''
# Screenshot
# driver.save_screenshot('screenshot.png')
driver.close()
if __name__ == '__main__':
unittest.main()
i 正在从1迭代到 n 。这是一个很好的直觉,因为我们需要每个数字。
j 正在从1迭代到 a 。调试代码的方法是通过一个示例。假设 i 将在范围(1,3)中迭代。第一次在循环中, j 将在范围(1,2)中迭代并且它将打印“1”。第二次, j 将在范围(1,3)中迭代并且它将打印“1 2”。这是我们的问题;我们想要2次打印两次!
我实际上是我们想要打印的数字, j 是我们要打印数字的次数。我们实际上不需要 a 变量:
n = eval(input("Enter a positive integer: "))
a=1
for i in range(1,n+1):
for j in range(1,a+1):
print(j," ",sep="",end="")
a+=1
print()
我们可以进一步浓缩这一点。我试着先把它想在脑子里,然后编码。
“我想要1次,2次,3次,3次等等。”这意味着,我们甚至不需要内循环。您知道有多少次要打印我 ...... 我次!
n = int(input("Enter a positive integer: "))
message = ""
for i in range(1, n + 1):
for j in range(0, i):
message += str(i) + " "
print(message)
另外,请注意代码中的样式。 PEP8有关于如何编写适当的Python代码的指南。注意:
如果可能,使用“int”优于“eval”,因为您只希望程序采用数字。
括号中的间距“range(1,a + 1)”优于“range(1,a + 1)”。
“a = 1”之类的变量声明优于“a = 1”。
这些最佳实践将使您的代码更具可读性:)
答案 4 :(得分:-3)
WORKDIR /install
ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi rewrite_amd64.msi
RUN Write-Host 'Installing URL Rewrite' ; \
Start-Process msiexec.exe -ArgumentList '/i', 'rewrite_amd64.msi', '/quiet', '/norestart' -NoNewWindow -Wait