11-20 Python 字符串练习 ——“大数字”

把输入的数字列表输出为“大数字”
效果如下:
    *       *****     ****        *       ***     ****   ********   ****    ******     ****    
  * *      *     *   *    *      **     *        *              *  *    *  *      *   *    *   
    *      *    *         *     * *     *        *             *   *    *  *      *  *      *  
    *          *       ***     *  *      ***     * ** *       *     ****     ******  *      *  
    *         *           *   *******        *   *    *      *     *    *         *  *      *  
    *        *       *    *       *          *   *    *     *      *    *        *    *    *   
   ***     *******    ****        *      ***     * ** *    *        ****        *      ****    

       练习题原题是用记事本写好脚本再用python命令行启动的,但是我写好之后在python测试却报错,错误是列表越界。但是我的代码是跟习题答案是一样的,但就是运行不出来。无奈之下,我只好试着用pycharm写成函数看看行不行吧,最后还是能运行成功的哈哈。
下面贴个代码吧,比较长,因为我的大字都是竖着赋值的,横着写脑子实在转不过来哎。
—————————————————————————————————————————————————————————————————————————————
Zero=["   ****   ",
      "  *    *  ",
      " *      * ",
      " *      * ",
      " *      * ",
      "  *    *  ",
      "   ****   ",]
One=[  "    *    ",
       "  * *    ",
       "    *    ",
       "    *    ",
       "    *    ",
       "    *    ",
       "   ***   ",]
Two=[  "  *****  ",
       " *     * ",
       " *    *  ",
       "     *   ",
       "    *    ",
       "   *     ",
       " ******* ",
     ]
Three=["  ****   ",
       " *    *  ",
       "      *  ",
       "   ***   ",
       "      *  ",
       " *    *  ",
       "  ****   ",]
Four=["    *   ",
      "   **   ",
      "  * *   ",
      " *  *   ",
      "******* ",
      "    *   ",
      "    *   ",]
Five=["   ***  ",
      " *      ",
      " *      ",
      "  ***   ",
      "      * ",
      "      * ",
      "  ***   ",]
Six=[ "  ****  ",
      " *      ",
      " *      ",
      " * ** * ",
      " *    * ",
      " *    * ",
      " * ** * ",]
Seven=["********",
       "       *",
       "      * ",
       "     *  ",
       "    *   ",
       "   *    ",
       "  *     ",]
Eight=["  ****  ",
       " *    * ",
       " *    * ",
       "  ****  ",
       " *    * ",
       " *    * ",
       "  ****  ",]
Nine=[ " ****** ",
       "*      *",
       "*      *",
       "  ******",
       "       *",
       "      * ",
       "     *  ",]
Digits=[Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine]

def bigdigts(digit,Digits=Digits):
   # print(Digits)
    row=0
    if len(digit)==0: print("ERROR")
    else:
        while row<7:
            line=""
            for i in digit:
             # print(i)
             line = line + Digits[i][row] + " "
            print(line)
            row+=1


bigdigts([1,2,3,4,5,6,7,8,9,0])
—————————————————————————————————————————————————————————————————————————————
说明:bidgits是主函数,要求输入一个数字列表,函数的第二个参数默认设成10个大数字的字符串,(刚开始学python,不知道这样会不会不规范哎)
逻辑是这样的:
  • 首先我的大数字都是七个字符串组成的列表,每个字符串代表每个大数字的每一行(每个大数字分成7行显示)
  • 函数开头先判断列表是否为空,是的话输出ERROR,否的话继续
  • 由于输出的的大数字可以分成7行,所以我是每行遍历一次列表,把每一行依次输出,最后显示列表的大数字
  • 在每一行中,用line把列表的每个数字对应的大数字的那一行拼接起来,然后把所有数字的这一行输出
  • 循环一遍之后,就得到结果了
—————————————————————————————————————————————————————————————————————————————
遇到的问题:
  • 开始读每个数字的某一行的时候总是报错,后来才发现是每个字符串间的逗号忘了写,估计是因为竖着写没注意
  • 判断列表是否为空,刚开始想用digit[]==ull,但是发现并不能用null,后来百度了一下,可以用列表的长度是否等于零 len(digit)==0 来判断,这个方法很好哈哈。
  • 还有一个知识点,就是sys.argv[]的使用  引用一下别人的解释:
import sys  
print(sys.argv[0])  
print(sys.argv[1])  
print(sys.argv[2])  
print(sys.argv[3])  
输入python test.py arg1 arg2 arg3
输出
test.py  
arg1  
arg2  
arg3 

今天的练习就到此吧
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        想起来也是有点惭愧,读了快四年的信息管理与信息系统了,接触过c++、java、R、这些语言,每一个都是只懂些皮毛,真要用还拿不出手,真的,连找工作都不敢说自己会编程了。好好学吧,希望Python能学得6起来,网站、爬虫、数据分析这三块目前看还是挺有兴趣的。

       再hea下去就真的活的太差劲了,还是要每天学习,给大脑充充电才行。

       对了 ,还要坚持健身,不然就真的越来越瘦,别人看到我这样说估计很想打我哈哈哈

       好啦,去睡觉了。明天继续学习!!






这里放个引用图片   跟文章没任何关系的



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值