1. 程式人生 > >python 認真學習的第天,從零開始

python 認真學習的第天,從零開始

#剪刀石頭布的小遊戲
#和第一天的程式碼相比,通過編寫函式的方式來顯示電腦出的什麼,程式碼沒有那麼臃腫

     import random
        i=random.randint(1,3)
        user=int(input('請出拳(1剪刀2石頭3布)'))
        assert 1<=user<=3,'輸入的值有誤,請輸入正確的數值' 
        def cs1(l):
            if i == 1:
                return '剪刀'
            elif i==2:
                return '石頭'
            else:
                return '布'
        l=i
        if i==user:
            print('平手')
            print('電腦出的是:',cs1(l),sep='')
        elif (user==1 and i==3) or (user==2 and i==1) or (user==3 and i==2):
            print('我贏了')
            print('電腦出的是:',cs1(l),sep='')
        else:
            print('電腦贏')
            print('電腦出的是:',cs1(l),sep='')

#使用exec和eval執行求值字串
 exec('i=20')
 exec('print(i)')
20
 print(i*i)
400
 from random improt randint
  File "<stdin>", line 1
    from random improt randint
                     ^
SyntaxError: invalid syntax
 from random import randint
 randint(1,20)
10
 exec('randint=30')
 randint(1,20)#賦值之後randint函式無法使用
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
 exec('randint=30',scope)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'scope' is not defined
 from random import randint
 randint(1,20)
17
 scope={}
 exec('randint=30',scope)
 randint(1,20)#把賦值放入一個字典就不會和已有函式衝突
4
 scope.keys()
dict_keys(['__builtins__', 'randint'])#字典中存在randint
 a=20
 args={'a':20,'b':30}
 scope={}
 exec('print(a+b)',scope,args)
50
 eval('1+2-4')#exec不會提供返回值,eval提供返回值
-1
 eval('2*(6-2)')
8
 scope={'x':20}
 args={'y':30}
 args.keys
<built-in method keys of dict object at 0x000000000255A678>
 scope.keys
<built-in method keys of dict object at 0x0000000001CFC480>
 eval('x+y',scope,args)
50

scope={}
codes=''
print('',end='')
while True:
    code=input('')
    if code =='':
        exec(codes,scope)
        codes=''
        print('',end='')
        continue
    codes += code +'\n'
#a,b,c=10,20,30
#print(a*b*c)
#6000
#判斷奇偶數,end退出
while True:
    a=input('請輸入一個數')
    if a=='end':
        break
    num=int(a)
    if num%2 == 0:
        print('這個數是偶數')
    else:
        print('這個數是奇數')
#輸入行數列印菱形
i=int(input('請輸入行數,必須是奇數!'))
assert i%2==1,'數值有誤'
if i%2 != 0:
    y=i//2
    x=1
    k=y
    while k>=0:
        print(' ' * k,end='')
        print('*' * (2*x-1))
        k -= 1
        x+=1
    x-=2
    k +=2
    while k<=y:
        print(' ' * k,end='')
        print('*' * (2*x-1))
        k+=1
        x-=1

#模擬計算器
while True:
    expression = input("calc:")
    if expression == "exit":
        break
    print(expression,"=", eval(expression))

#列表和元組
names=['my','name','is','a','pig']
number=[1,2,3,4,5,6,7]
salary=[5.0,6.0,7.0,8.0]
flags=[True,False,True,False]
values=[names,number,salary,flags,['a','b','c']]
for value in values:
    print(value)


#分片、加、乘
omg=input('輸入年份')[3]
print(omg)

import re
months=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
year=input('年:')
assert 1<=int(year)<=9999,'輸入的值有誤'
month=input('月:')
assert 1<=int(month)<=12,'輸入的值有誤'
day=input('日:')
assert 1<=int(day)<=31,'輸入的值有誤'


monthname=months[int(month)-1]
print(year + '年'+ monthname + day +'日') 
#切片
>>> s='123456789'
>>> print(s[8:9])
9
>>> print(s[2:9])
3456789
>>> print(s[2:10])
3456789
>>> print(s[2:111])
3456789
>>> print(s[0:9])
123456789
>>> print(s[1:9])
23456789
>>> print(s[1:8])
2345678
>>> number=[1,2,3,4,5,6,7,8]
>>> print(number[-3:-1])
[6, 7]
>>> print(number[-3:-0])
[]
>>> print(number[3:-0])
[]
>>> print(number[0:3])
[1, 2, 3]
>>> print(number[-3:])
[6, 7, 8]
>>> print(number[-3:8])
[6, 7, 8]
>>> print(number[:])
[1, 2, 3, 4, 5, 6, 7, 8]
>>> print(number[:3])
[1, 2, 3]
>>> print(number[1:6:2])
[2, 4, 6]
>>> print(number[1:8:2])
[2, 4, 6, 8]
>>> print(number[:7:2])
[1, 3, 5, 7]
>>> print(number[:8:2])
[1, 3, 5, 7]
>>> print(number[::2])
[1, 3, 5, 7]
>>> print(number[4::2])
[5, 7]
>>> print(number[8:2:-2])
[8, 6, 4]
>>> print(number[8:2:-1])
[8, 7, 6, 5, 4]
>>> print(number[8:2:0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: slice step cannot be zero

url=input('請輸入網址:')#https://www.baidu.com
scheme=url[:5]
host=url[8:]
print('scheme:',scheme,'\n',"host:",host)

n=int(input('請輸入一個整數:'))
numbers=range(1,n)
number1=numbers[0::2]
number2=numbers[1::2]
for number in number1:
    print(number,end=' ')
print('')
print(' ',end = '')
for number in number2:
    print(number,end=' ')
'''