bob*_*rge 4 python string if-statement input function
我希望收到用户输入的5位数字,然后打印每个特定数字的内容.
例如,如果用户输入12345,我想首先打印1的特定输出,然后打印另一个输出2,等等.
我该怎么做呢?如果可能的话,我更愿意创建一个函数.
#!/usr/bin/python3
zipcode = int(raw_input("Enter a zipcode: "))
if zipcode == 1:
print ":::||"
elif zipcode == 2:
print "::|:|"
elif zipcode == 3:
print "::||:"
elif zipcode == 4:
print ":|::|"
elif zipcode == 5:
print ":|:|:"
elif zipcode == 6:
print ":||::"
elif zipcode == 7:
print "|:::|"
elif zipcode == 8:
print "|::|:"
elif zipcode == 9:
print "|:|::"
elif zipcode == 0:
print "||:::"
Run Code Online (Sandbox Code Playgroud)
您可以使用字典,然后遍历输入:
zipcode = raw_input("Enter a zipcode: ")
codes={1:":::||",2:"::|:|",3:"::||:",4:":|::|",5:":|:|:",6:":||::",7:"|:::|",8:"|::|:",9:"|:|::",0:"||:::"}
for num in zipcode:
print codes[int(num)], #add a comma here if you want it on the same line
Run Code Online (Sandbox Code Playgroud)
这会给你:
>>>
Enter a zipcode: 54321
:|:|: :|::| ::||: ::|:| :::||
Run Code Online (Sandbox Code Playgroud)
编辑:
没有空格:
zipcode = raw_input("Enter a zipcode: ")
codes={1:":::||",2:"::|:|",3:"::||:",4:":|::|",5:":|:|:",6:":||::",7:"|:::|",8:"|::|:",9:"|:|::",0:"||:::"}
L = [] #create a list
for num in zipcode:
L.append(codes[int(num)]) #append the values to a list
print ''.join(L) #join them together and then print
Run Code Online (Sandbox Code Playgroud)
现在这将打印:
>>>
Enter a zipcode: 54321
:|:|::|::|::||:::|:|:::||
Run Code Online (Sandbox Code Playgroud)
一个很好的解决方案
将它们存储在tuple(而不是字典中,因为所有值都按顺序存在,list或者tuple在这种情况下比通过键和值访问更好)
list_bars = (":::||","::|:|",...)
Run Code Online (Sandbox Code Playgroud)
这样,你不需要很多if,elif东西
不要把它转换int为str自己.使用此方法,您可以迭代字符串而不是转换的数字.
最后在一个地方获取所有代码,
zipcode = raw_input("Enter a zipcode: ")
list_bars = (":::||","::|:|","::||:",":|::|",":|:|:",":||::","|:::|","|::|:","|:|::","||:::")
for i in zipcode:
print(list_bars[int(i)-1])
Run Code Online (Sandbox Code Playgroud)
现在进行一个小型演示
Enter a zipcode: 123
:::||
::|:|
::||:
Run Code Online (Sandbox Code Playgroud)
使用timeit模块测试之间的差异list,tuple并dictionary作为数据结构
bhargav@bhargav:~$ python -m timeit 'list_bars = [":::||","::|:|","::||:",":|::|",":|:|:",":||::","|:::|","|::|:","|:|::","||:::"]; [list_bars[int(i)-1] for i in "12345"]'
100000 loops, best of 3: 3.18 usec per loop
bhargav@bhargav:~$ python -m timeit 'list_bars={1:":::||",2:"::|:|",3:"::||:",4:":|::|",5:":|:|:",6:":||::",7:"|:::|",8:"|::|:",9:"|:|::",0:"||:::"}; [list_bars[int(i)] for i in "12345"]'
100000 loops, best of 3: 3.61 usec per loop
bhargav@bhargav:~$ python -m timeit 'list_bars = (":::||","::|:|","::||:",":|::|",":|:|:",":||::","|:::|","|::|:","|:|::","||:::"); [list_bars[int(i)-1] for i in "12345"]'
100000 loops, best of 3: 2.6 usec per loop
Run Code Online (Sandbox Code Playgroud)
如您所见,与其他人相比,a tuple是最快的.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |