1.标准输入和标准输出
#标准输入
>>> import sys
>>> hi=sys.stdin.readline()
hello
>>> hi
'hello\n'
>>> hi[:-1]
'hello'
>>> hi=sys.stdin.readline() #输入类型为字符串
1
>>> type(hi)
<class 'str'>
#标准输出
#以下三行在事实上等价:
import sys
sys.stdout.write('hello'+'\n')
print('hello')
print(len('hello'))
2.最大值最小值
练习 :找到列表最大值,找到列表第二大值。[1,2,2,3,3,4,4]
#找到列表最大值
>>> ls=[1,2,2,3,3,4,4]
>>> flag=0
>>> for i in ls:
... if i>flag:
... flag=i
...
>>> print (flag)
4
>>> max(ls)
4
>>> min(ls)
1
#找到第二大数值
>>> a
[1, 4, 6, 2, 3, 7, 1, 1, 3, 5]
>>> sorted(list(set(a)))[-2]
6
#a=[1,3,5,7,7,5,2,1]
a=[7,5,5,7,7,5,2,1]
max = ""
second_max_num = ""
for i in a:
if max =="":
max = i
elif i>max:
second_max_num = max
max = i
elif i<max and second_max_num == "":
second_max_num = i
elif i<max and second_max_num != "" and i>second_max_num:
second_max_num = i
print(second_max_num )
3.random函数
>>> import random
>>> random.random() #生成0和1之间的随机浮点数float
0.5514671641463105
>>> random.randint(1,3) #随机整数
2
>>> random.randint(1,3)
3
>>> random.randint(1,3)#开区间
1
>>> random.choice([1,2,34,5,6]) #随机从list取值
34
>>> random.choice([1,2,34,5,6])
6
>>> a=[1,4,65,7]
>>> random.shuffle(a) #重新排序
>>> a
[4, 65, 7, 1]
>>> random.uniform(3,6) #随机生成数字
3.1478466842745556
>>> random.uniform(3,6)
4.632935459538357
#取10个随机字母
>>> import string
>>> a=list(string.ascii_letters)
>>> result=[]
>>> for i in range(10):
... result+=random.choice(a)
...
>>> print (result)
['U', 'J', 'j', 'T', 's', 'y', 'W', 'R', 'Z', 'J']
>>> ''.join(result)
'UJjTsyWRZJ'
#方法二:
>>> import string
>>> a=list(string.ascii_letters)
>>> random.shuffle(a)
>>> ''.join(a[:10])
'vKhBoaIjXc'
#方法三:
>>> import string
>>> a=list(string.ascii_letters)
>>> random.sample(a,10)
['w', 'Z', 'D', 'Y', 'e', 'x', 'R', 'Q', 'W', 'C']
>>> "".join(random.sample(a,10))
'CvsdrWtexu'
#随机生成9位密码,要求3数字、3小写字母、3大写字母,随机组合
import string
import random
a=list(string.ascii_lowercase)
b=list(string.ascii_uppercase)
c=list(string.digits)
flag=[]
for i in range(9):
if i <3:
flag+=random.choice(a)
elif i<6:
flag += random.choice(b)
else:
flag += random.choice(c)
print(flag)
random.shuffle(flag)
print(''.join(flag))
#方法二:
import random
num_part = str(random.randint(100,999))
lower_letter_part = ""
for i in range(3):
lower_letter_part+=chr(random.randint(97,122))
upper_letter_part = ""
for i in range(3):
upper_letter_part+=chr(random.randint(65,90))
s=list(num_part+lower_letter_part+upper_letter_part)
random.shuffle(s)
print("".join(s))
4.二进制和十进制互换
#二进制转十进制
s=input("请输入一个二进制数字:")
print(type(s))
l=len(s)
result=0
for i in range(l):
#print(int(s[-i-1]))
result+=int(s[-i-1])*2**i
print(result)
#十进制转二进制
k=input("请输入一个十进制数字:")
l2=len(k)
result2=[]
while 1:
if divmod(int(k),2)[0]!=0:
#divmod(a,b)用来取余
result2.insert(0,str(divmod(int(k),2)[1]))
#用append导致拼接结果反了
#列表中内容为数字时,最后用join会报错,只能拼接string
k=divmod(int(k),2)[0]
#print(k)
else:
result2.insert(0,str(divmod(int(k),2)[1]))
break
print(type(result2[1]))
print("".join(result2))
#十进制转二进制
num=input("请输入一个十进制数字:")
result3=[]
while num!=0:
num,num2=divmod(int(num),2)
result3.insert(0,str(num2))
print(''.join(result3))