我写了一个python脚本,它的数字是1-9 (0是":“),不像真正的1^k形式的一元语言,我用它们的小数位来表示n的值。整数121总体上是1_11_1,n个“整数”中的每一个k位数都是计数表示法,计数的数量是给定n个“整数”中所有数字的总和,例如121 = 4,1_11_1 = 4。
它叫多减一次。如果可以在多时间内将实例A(9,33,4)转换为实例B(1111_1111 1,111-111,1111),那么它的NP-完全
转换规则就是在while循环中按顺序输入每个整数。另外,当你的整数是负数时,你不会给输入一个"-“符号。如果是负数,它将要求输入。
Input
(9,33,4) "9, and then 33 and then 4. One at a time for each input."
Output
'111_1111 1' = 9
111
33>>
111
11 11 =4约简
# This algorithm is very simple and inconsequential.
# It converts integers into a unary like language
# in poly time. All tallies are represented vertically.
print('If your integer is a negative, the script will ask.')
print("DO NOT GIVE -X integers for input!!!")
print('Script will output multiple - symbols for a negative integer transformation')
while 0 == 0:
ask = input('Enter an integer from a subset-sum instance sequentially.')
askStr = str(ask)
res = list(map(int, str(askStr)))
x = (res)
asktwo = input('Is your integer a negative integer? y or n: ')
if asktwo == str("y"):
twinkle = str('-')
else:
twinkle = str(" ")
for n in x:
if n == 0:
tallyone = ":"
print(twinkle, tallyone)
if n == 1:
print(twinkle, "1")
if n == 2:
print(twinkle, "11")
if n == 3:
print(twinkle, "111")
if n == 4:
print(twinkle, "11 11")
if n == 5:
print(twinkle, "111 11")
if n == 6:
print(twinkle, "111 111")
if n == 7:
print(twinkle, "111_111 1")
if n == 8:
print(twinkle, "1111 1111")
if n == 9:
print(twinkle, "1111_1111 1")从什么角度看,这段代码是不是很草率?我是不是以一种丑陋的方式使用way循环和变量名称?我在打印报表中的数字很难读懂吗?我的代码中最丑陋的部分是什么,我将如何改进它们?
密码有效。但是,我对python还不太了解,所以您在我的代码中看到了哪些错误?
发布于 2019-09-19 09:24:27
这是一项非常有趣的任务。干得好。以下是一些批评。
打印(‘如果你的整数是负的,脚本会问’)。打印(“不要为输入提供-X整数!”)打印(“脚本将输出用于负整数转换的多个符号”)
"")和单引号('')字符串。选一个。我个人更喜欢""。而0 == 0: ask =input(‘从子集和实例中依次输入一个整数’)。
while True而不是while 0 == 0来表示一个没完没了的循环。askStr = str(ask) res = list(map(int,str(AskStr)
ask转换两次为字符串。这是多余的。input()返回一个字符串,所以根本不需要转换它。ask_str或valueX= (res)
x,您可以直接使用res。如果两个== str("y "):twinkle = str('-'),否则: twinkle = str(“”)
"y"作为字符串。twinkle不是一个好名字。使用类似于sign的东西。发布于 2019-09-19 07:07:47
成语
这些短语将出现在python代码中。基本上他们指的是可读性。
其他程序员必须能够阅读您编写的代码。这里有一些事情可以做,以提高你的知识。
help()与其他方法结合使用,以获取docstring和有关python工作方式的信息。type()将显示当前正在使用的数据类型。input()返回一个字符串。int(str, base)返回带有给定值(2 <= base <= 36)基的整数。enumerate(tuple)允许索引,是快速的(因为它不需要创建一个新的列表)。while 0==0:很丑。while True:是无限美丽的。print('user instructions')
response = input('Pick an integer value less than infinity:\n')
mapped_response = map(int, response)
response_length = len(response) - 1 # eewww!
result = ''
for index, value in enumerate(mapped_response):
result = f"{result}\
{':' if not value else ''.join('1' for _ in range(value))}\
{'_' if index < response_length else ''}"
print(result)543210
11111_1111_111_11_1_:
https://codereview.stackexchange.com/questions/229287
复制相似问题