这是我的象形文字代码。我希望它像约翰= * * * * *,为什么输出中有“无”?
print("Pictograph")
def J(a):
for i in range(1, a+1):
print("*", end=" ")
def C(b):
for j in range(1, b+1):
print("*", end=" ")
def Z(c):
for j in range(1, c+1):
print("*", end=" ")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John = ", J(x))
print("Chas = ", C(y))
print("Zed = ", Z(z))
这是输出
Pictograph
Enter John's Number: >? 5
Enter Chas's Number: >? 4
Enter Zed's Number: >? 3
* * * * * John = None
* * * * Chas = None
* * * Zed = None
您正在定义一个函数,您不会从中返回任何内容。更改函数以返回值。另外,你知道你可以使用*
运算符重复一个字符串,例如3 * 'a'
是'aaa'
:
def J(a):
return (a * '* ')[:-1]
s[:-1]
意味着你正在使用字符串s
的所有元素,但最后一个。
您还可以定义一个函数来打印模式,这样可以避免代码重复。
def repeat_pattern(n):
return (n * '* ')[:-1]
因此,您的代码如下:
print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", repeat_pattern(x))
print("Chas =", repeat_pattern(y))
print("Zed =", repeat_pattern(z))
整个代码可能只是:
print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", ' '.join(x * '*'))
print("Chas =", ' '.join(y * '*'))
print("Zed =", ' '.join(z * '*'))
或者像@ lmiguelvargasf的解决方案:
print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", (x * '* ')[:-1])
print("Chas =", (y * '* ')[:-1])
print("Zed =", (z * '* ')[:-1])
两者都重现这个(示例输出):
Pictograph
Enter John's Number: 5
Enter Chas's Number: 4
Enter Zed's Number: 3
John = * * * * *
Chas = * * * *
Zed = * * *
由于您熟悉循环,我会使用一种解决方案,让您无需添加更多代码即可添加更多数据:
print("Pictograph")
data = []
for person in ['John', 'Chas', 'Zed']:
data.append((person, int(input(f"Enter {person}'s Number: "))))
for person, number in data:
print(f"{person} =", *(['*'] * number))
用法
> python3 test.py
Pictograph
Enter John's Number: 13
Enter Chas's Number: 3
Enter Zed's Number: 20
John = * * * * * * * * * * * * *
Chas = * * *
Zed = * * * * * * * * * * * * * * * * * * * *
>
您可以考虑输出中的制表符来对齐最左侧的星号。