#1统计不同字符个数。用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其它字符的个数。
alb="abcdefghijklmnopqrstuvwxyz" number="0123456789" n1,n2,n3,n4=0,0,0,0 #n1、n2、n3分别统计数字、字母、空格和其它字符的个数 str=input("Enter your string:") for c in str: if c in alb: n1+=1 elif c in number: n2+=1 elif c==' ': n3+=1 else: n4+=1 print("The {}-character-string has:\n".format(len(str)) +"{} letters\n".format(n1) +"{} numbers\n".format(n2) +"{} ' '\n".format(n3) +"{} other characters.".format(n4))
#2编写程序,求输入两个整数的最大公约数和最小公倍数(最小公倍数可以通过转转相除法求得)
a=eval(input("Input the 1st number:")) b=eval(input("Input the 2nd number:")) div =1 for i in range(2,min(a,b)+1): if a%i==0 and b%i==0: div=i mul=int(a*b/div) print("For {} and {}:".format(a,b)+ "the greatest common divisor is {}; ".format(div)+ "the lowest common multiple is {}.".format(mul))
#3猜数问题:让计算机随机生成一个0~100之间的整数。用户从键盘输入一行字符猜测这个数是多少。计算机将两个数比较并给出比较结果,猜错了再猜,如此循环,知道猜对为止。(注:使用异常处理异常字符串)
import random x=random.randint(0,100) while True: a=input("Enter a number you guess between 0 and 100:") try: if eval(a)>100 or eval(a)<0: print("Your number is out of range! Try again!") continue else: if eval(a)>x: print("Your number is too large, try again!") continue elif eval(a)<x: print("Your number is too low, try again!") else: print("Congratulation! Your number {} is correct!".format(x)) break except TypeError: print("Wrong format!") except NameError: print("Wrong format!")
#4羊车门问题。有3扇关闭的门,一扇门后面停着车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后参赛者更换自己的选择,参选者若选到汽车则获胜。请问:参赛者更换选择后能否增加猜中汽车的机会?——这是一个经典问题,请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的几率。(要求使用异常处理)
import random a,b,c="car","goat1","goat2" #a、b、c代表三扇门 sum=1000000 #样本量 #不提前开门的情况: win1=0 for i in range(sum): choice=random.choice([a,b,c]) if choice=='car': win1+=1 print("The rate of winning on the 1st condition is {}".format(win1/sum)) #提前开门且改变选择的情况: win2=0 for i in range(sum): choice=random.choice([a,b,c]) if choice=='car': #prdoor=b/c choice=c #此时选b和c都一样 elif choice=='goat1': #prdoor=c choice=a else: #prdoor=b choice=a if choice=='car': win2+=1 print("The rate of winning on the 2nd condition is {}".format(win2/sum))
输出结果:
The rate of winning on the 1st condition is 0.332045
The rate of winning on the 2nd condition is 0.667128